创建数据库"student"后,当我设置数据库的权限时,出现错误,并显示消息"error 1146(42S02):表"student.db"不存在。我不明白为什么会发生这种错误,尽管我确实创建了数据库。
你能告诉我问题出在哪里吗?
请参阅下面的步骤进行复制。
Start mysql with root account
create database student;
use student;
insert into db values ('%', 'student', 'beginner', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y');
出现错误。。。。。。"错误1146(42S02):表'student.db'不存在。
我可以使用"show databases;"检查学生数据库是否存在。但这条消息说"student.db"并不存在。
您似乎正试图通过直接修改系统表来授予权限。每个MySQL实例中都有一个表mysql.db
,但该表不属于您的student
数据库。
我建议您使用GRANT语句,而不是直接修改系统数据:
mysql> CREATE USER 'beginner'@'%' identified by 'enter password here';
mysql> GRANT ALL PRIVILEGES ON student.* to 'beginner';
student.db引用student
数据库中名为db的TABLE。你显然还没有创建这个表
b.t.w.仔细阅读错误消息和您认为的问题所在。
此语句
insert into db values ('%', 'student', 'beginner', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y');
假设在某个时刻,名为db
的表已经创建:
create table db ( ...
根据你在这里展示的内容,你似乎并没有创造它;你认为它的定义是从哪里来的?
您已经创建了一个数据库,但还没有在其中创建任何表。您正在告诉MySQL将您的数据插入到一个不存在的表名"db"中。你需要这样的东西:
create database student;
use student;
create table db (.... field definitions here ...) <---you're missing this step
insert into db values (....);
数据库只是一个容器。它必须至少定义一个表才能真正有用。
问题是。。。您有一个带有"InnoDB ENGINE"的数据库。。。。。。。我的解决方案是。。。你必须有一个"MyISAM引擎",如何改变?。。。在您的环境中可以找到
# find / -name my.cnf
在LINUX上,只需在中添加以下行
$ vim /etc/mysql/my.cnf
default-storage-engine= MyISAM
然后重新启动mysql:
$ service mysql restart