无法向在 mysql 上使用 root 的用户授予权限

Cannot grant privileges to a user using root on mysql

我正在尝试向 mysql 上的用户授予显式权限,我正在这样做(对已创建的用户)

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, SHOW DATABASES, 
 CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, 
 CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER 
ON mydatabase.* 
TO 'myuser'@'localhost' ;

但是我收到了这个奇怪的错误:

Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

我尝试与其他用户一起使用其他模式进行 GRANT ALL PRIVILEGES 并且似乎有效。有什么想法吗?

某些权限仅在授予引用 ON *.* 作为 schema.table 时才有意义。

手册页 https://dev.mysql.com/doc/refman/5.7/en/grant.html 列出了所有可用权限,并针对 globaldatabase、[=22 分别进行了注释=]table,取决于您是否可以在不同级别的范围内授予它们。

SHOW DATABASES 权限只能在全局级别授予。

所以你必须这样做:

GRANT SHOW DATABASES 
ON *.* 
TO 'myuser'@'localhost' ;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, 
 CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, 
 CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER 
ON mydatabase.* 
TO 'myuser'@'localhost' ;