GRANT EVENT,EXECUTE,LOCK TABLES和TRIGGER所需的MySQL权限

我有一个帐户user_a ,并且我想将some_db上的所有可用权限授予user_b 。 我已经尝试了以下查询:

 GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE ON `some_db`.* TO 'user_b'@'%' WITH GRANT OPTION 

结果:

访问拒绝用户'user_a'@'%'到数据库'some_db'

有些实验告诉我,我的帐户( user_a )唯一的权限是EVENTEXECUTELOCK TABLESTRIGGER

我的帐户需要哪些权限才能将这些权限授予其他用户?

如果我运行SHOW GRANTS ,我得到这个输出:

 "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'user_a'@'%' IDENTIFIED BY PASSWORD '1234567890abcdef' WITH GRANT OPTION" "GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `some_other_unrelated_db`.* TO 'user_a'@'%'" "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `another_unrelated_db`.* TO 'user_a'@'%' WITH GRANT OPTION" 

使用GRANT OPTION权限,您只能授予您拥有的权限。 所以,以下权限不能授予user_b :EVENT,EXECUTE,LOCK TABLES,TRIGGER,UPDATE。

授予用户权限仅限于全球拥有“授予”权限的用户。

基本上,你必须有足够的权限来修改全球“授权”表…它给你足够的特权授予任何用户的任何特权。 权限不存储在每个模式中,而是存储在“mysql”模式的1个表中。

对于具有授权特权的用户列表,请尝试运行此查询:

 SELECT User, Grant_priv from mysql.user;