MySQL WITH GRANT OPTION行为异常问题咨询
问题原因
user1的INSERT和UPDATE权限来自同一条带WITH GRANT OPTION的GRANT语句,这两个权限属于同一个权限条目,意味着user1对这两个权限都拥有转授资格。
当给user2分两次授权时,MySQL会自动合并针对同一表的权限记录。只要其中一次授权带WITH GRANT OPTION,合并后的整条记录就会继承该属性,最终导致user2的两个权限都具备转授能力。
解决方法
撤销user2现有权限(用user1或更高权限用户执行):
REVOKE INSERT, UPDATE ON school.STUDENTS FROM 'user2'@'localhost';拆分user1的权限记录(需root等全局权限用户操作):
先撤销user1的合并权限,再分别授予独立权限:REVOKE INSERT, UPDATE ON school.STUDENTS FROM 'user1'@'localhost'; GRANT INSERT ON school.STUDENTS TO 'user1'@'localhost' WITH GRANT OPTION; GRANT UPDATE ON school.STUDENTS TO 'user1'@'localhost';重新给user2授权(切换回user1执行):
GRANT INSERT ON school.STUDENTS TO 'user2'@'localhost' WITH GRANT OPTION; GRANT UPDATE ON school.STUDENTS TO 'user2'@'localhost';
完成后查看user2的权限,会得到两条独立记录:INSERT权限带WITH GRANT OPTION,UPDATE权限无转授能力,完全符合预期。
内容的提问来源于stack exchange,提问作者D yh
相关产品推荐
相关产品推荐

