我想在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
可以在只读时创建表。
谢谢!
答案 0 :(得分:4)
请检查My.cnf
for Linux或My.ini
下的[mysqld]
下的窗口删除只读参数然后重新启动服务并重试以解决只读问题,但如果您创建只读的表将是临时表。