MySQL Error number: MY-010967; Symbol: ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES; SQLSTATE
文档解释
Error number: MY-010967; Symbol: ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES; SQLSTATE: HY000
Message: Can’t set mandatory_role %s@%s: Anonymous authorization IDs are not allowed as roles.
错误说明
MY-010967 ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES错误指的是“禁止在强制性角色中使用匿名授权ID”。在MySQL服务器中,创建一个或多个强制性角色,则不能向它们授予匿名用户的权限。匿名用户的权限禁止针对强制性角色,因为MySQL不认可匿名用户的安全性。
常见案例
一个常见的场景,会触发这个错误,是当管理员试图将匿名用户授权给被设置为强制的角色时,会抛出此错误。例如,当我们试图执行以下语句时:
GRANT SELECT ON *.* TO ‘@localhost’@’%’ WITH MANDATORY ROLES;
将会抛出以下错误:
ERROR MY-010967 (HY000): Anonymous authentication ID ‘@localhost’@’%’ is not allowed in mandatory roles.
解决方法
要解决MY-010967 ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES错误,首先要确定问题的根源,以及正在使用的正确的授权方案。可以通过修改用户设置为有效用户,而不是匿名用户来尝试修复此错误,以正确分配角色或功能。可以使用以下两个可用的MySQL命令在MySQL服务器上修改用户:
CREATE USER ‘username’@’hostname’ IDENTIFIED BY ‘password’;
GRANT ROLE role_name TO ‘username’@’hostname’;
另一种可行的解决方案是先删除已被设置为强制性的角色,然后再重新授权它们。可以使用以下命令删除特定的角色:
DROP ROLE role_name;
最后,未能遵守MySQL的规则,而触发此错误的原因,可能是管理员忘记了禁止向强制性角色授予匿名用户的权限。在执行任何操作之前,最好先对MySQL服务器中的角色和功能进行熟悉,以免出现不必要的麻烦。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341