MySQL:授予数据库**全部**权限

702

我创建了一个数据库,例如 'mydb'。

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

现在我可以从任何地方登录到数据库,但无法创建表格。

如何在该数据库和(未来的)表格上授予所有权限。我无法在“mydb”数据库中创建表格。我总是收到以下错误信息:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'

5
仅当您使用诸如“INSERT”、“UPDATE”或“DELETE”语句直接修改授权表时,才应使用“FLUSH PRIVILEGES;”。 - simhumileco
11个回答

6

要将数据库mydb的所有权限授予用户myuser,只需执行以下命令:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

或者:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
PRIVILEGES关键词不是必需的。
此外,我不知道为什么其他答案建议将IDENTIFIED BY 'password'放到命令的末尾。我认为这并非必需。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接