我试图在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的其他模式,似乎正在运行。有什么想法吗?
答案 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' ;