第一个可能的原因是,在授权时未指定角色。当大家想给用户授权角色时,需要使用“GRANT ROLE”语句,其中需要指定角色的名称。如果大家忘记了指定角色的名称,那么授权将不会生效。例如:
GRANT role_name TO user_name@host;
第二个可能的原因是,在使用“GRANT ROLE”语句时,没有使用WITH ADMIN OPTION选项。当大家想让用户能够授予其他用户相同权限时,需要使用WITH ADMIN OPTION选项。如果大家忘记了添加这个选项,那么用户将无法授权其他用户。例如:
GRANT role_name TO user_name@host WITH ADMIN OPTION;
第三个可能的原因是,在查询权限时,没有使用SHOW GRANTS FOR命令。当大家想查看用户的权限时,需要使用SHOW GRANTS FOR命令。如果大家直接查询用户的权限表,将无法看到用户被授予的角色权限。例如:
SHOW GRANTS FOR user_name@host;
在进行以上三项检查后,大家可以确定角色授权问题是否已经解决。偶相信,只要根据以上方法进行检查和处理,MySQL的角色问题就不再是什么难题了。