MySQL Error number: 3897; Symbol: ER_CANNOT_GRANT_SYSTEM_PRIV_TO_MANDATORY_ROLE; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: 3897; Symbol: ER_CANNOT_GRANT_SYSTEM_PRIV_TO_MANDATORY_ROLE; SQLSTATE: HY000

Message: AuthId `%s`@`%s` is set as mandatory_roles. Cannot grant the ‘%s’ privilege.

错误说明:

MySQL的ER_CANNOT_GRANT_SYSTEM_PRIV_TO_MANDATORY_ROLE错误表示,不能将系统特权授予交互角色(mandatory role)。该错误是由系统发出的,当MySQL试图为一个特定的角色授予的系统特权级别的权限时,会禁止此类操作。该错误由MySQL 5.7支持。

常见案例

ER_CANNOT_GRANT_SYSTEM_PRIV_TO_MANDATORY_ROLE错误通常会在MySQL中尝试将系统特权授予Insert_Test角色时发生。例如,MySQL试图在下面的语句中授予INSERT_TEST角色sys_priv:

GRANT SYS_PRIV ON *.* TO INSERT_TEST;

此外,此错误还可能发生在尝试授予某些系统特权时,诸如EXECUTE或ALTER。

解决办法:

首先,在尝试授予系统特权时,您应该确保用户是普通用户,而不是必须角色。如果您只是想要授予系统特权,只需将其分配给INSERT_TEST帐户而不是INSERT_TEST角色即可。

例如:

GRANT SYS_PRIV TO INSERT_TEST@hostname;

其次,您可以尝试删除INSERT_TEST“mandatory_role_statement”,当检测到未满足条件分配时,系统将执行此类操作。

关于MySQL的此错误的其他解决方法的更多问题,您可以查看MySQL 5.7文档中的ER_CANNOT_GRANT_SYSTEM_PRIV_TO_MANDATORY_ROLE部分,了解更多细节。


数据运维技术 » MySQL Error number: 3897; Symbol: ER_CANNOT_GRANT_SYSTEM_PRIV_TO_MANDATORY_ROLE; SQLSTATE: HY000 报错 故障修复 远程处理