MySQL使用--read-only错误创建表问题

时间:2014-02-26 03:35:37

标签: mysql

我想在MySQL中创建一个拥有自己数据库所有权限的用户。

当我使用此用户创建表时,MySQL返回SQL服务器以只读选项运行。

但是当我更改为另一个拥有*.*所有权限的现有用户时,我可以创建表而不会出错。

我想知道只读选项是全局还是什么?

以下是使用MySQL root的MySQL命令:

mysql> create user 'demo'@'localhost' identified by 'demo';
mysql> create database demo;
mysql> grant all privileges on demo.* to demo@localhost;
mysql> show grants for demo@localhost;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for demo@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'demo'@'localhost' IDENTIFIED BY PASSWORD '*demo-hashed*' |
| GRANT ALL PRIVILEGES ON `demo`.* TO 'demo'@'localhost'                                                |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

然后我切换到用户“demo”:

mysql> use demo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table t(t1 int);
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

所以我检查了只读选项,它似乎已经开启了。

然而,我尝试使用具有*.*权限的其他用户,我可以成功创建表。

另一个用户授权设置:

mysql> show grants for demo2@'%';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for demo2@%                                                                                            |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'demo2'@'%' IDENTIFIED BY PASSWORD '*demo2-hased*' |
+-----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MySQL版本:

mysql> select version();
+------------------------+
| version()              |
+------------------------+
| 5.1.68.0 |
+------------------------+
1 row in set (0.00 sec)

BTW,在我设置read_only = 0后,我可以使用demo来创建表格。我只是不知道为什么demo2可以在只读时创建表。

谢谢!

1 个答案:

答案 0 :(得分:4)

请检查My.cnf for Linux或My.ini下的[mysqld]下的窗口删除只读参数然后重新启动服务并重试以解决只读问题,但如果您创建只读的表将是临时表。