授予事件、执行、锁定表和触发所需的 MySQL 权限

授予事件、执行、锁定表和触发所需的 MySQL 权限

我有一个帐户,user_a并且我想授予 的所有可用权限some_dbuser_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

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

如果我运行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"

答案1

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

答案2

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

基本上,您必须拥有足够的权限才能修改全局“授权”表……这将为您提供足够的权限来向任何用户授予任何权限。权限不存储在每个架构中……而是存储在“mysql”架构中的 1 个表中。

要获得具有授予权限的用户列表,请尝试运行此查询:

SELECT User, Grant_priv from mysql.user;

相关内容