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

时间:2017-11-23 17:17:39

标签: mysql 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' ;

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

Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

我尝试了其他用户制作GRANT ALL PRIVILEGES的其他模式,似乎正在运行。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

手册页https://dev.mysql.com/doc/refman/5.7/en/grant.html列出了所有可用的权限,并根据全局数据库进行了说明。是否可以在不同的范围内授予他们。

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' ;