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

jpg*_*z18 9 mysql sql database privileges sql-grant

我正在尝试向 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' ;
Run Code Online (Sandbox Code Playgroud)

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

DB GRANT 和 GLOBAL PRIVILEGES 的使用不正确

我尝试与其他用户一起尝试其他模式,并授予所有特权,并且似乎有效。任何想法?

Bil*_*win 21

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

手册页https://dev.mysql.com/doc/refman/5.7/en/grant.html列出了所有可用的权限,并根据是否可以在不同级别授予它们对globaldatabasetable进行了注释的范围。

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' ;
Run Code Online (Sandbox Code Playgroud)