Error number: 3901; Symbol: ER_PARTIAL_REVOKE_AND_DB_GRANT_BOTH_EXISTS; SQLSTATE: HY000
Message: ‘%s’ privilege for database ‘%s’ exists both as partial revoke and mysql.db simultaneously. It could mean that the ‘mysql’ schema is corrupted.
错误说明
ER_PARTIAL_REVOKE_AND_DB_GRANT_BOTH_EXISTS是MySQL官方错误编号,也称为MySQL Error code 3901。属于HY000(一般错误类型)SQLSTATE代码。这个错误表明数据库用户的部分收回和数据库授权的存在都不允许。 这表明此用户已收回部分授权,但仍具有数据库授权,或反过来,他们具有部分授权,但同时具有数据库授权。 因此,此错误表示MySQL不允许这种部分交叉授权状态,而当这种授权存在时,则会抛出此错误码。
常见案例
ER_PARTIAL_REVOKE_AND_DB_GRANT_BOTH_EXISTS错误通常发生在MySQL用户收回部分授权时,但又存在一个更改后的数据库授权。这情况可能发生在一些现有的授权之间的混合和交叉的情况下。例如,当您已收回此用户部分授权,但此用户仍继续拥有某个数据库的授权时,服务器将会抛出此错误码。
解决方法
当您收到此错误消息时,首先应该检查当前用户的部分收回和另一种形式的授权。如果您发现任何这种授权存在,您需要采取操作以将这两个授权组合在一起,从而确保用户只有一个授权。例如,您可以收回数据库授权,并回收部分授权,以获得一致性。但要考虑到用户需要的授权,以确保不会被间接地受到影响。另外,您还可以手动更新MySQL用户的权限,以确保用户已正确授权。总的来说,您需要确保已正确授权用户,并关闭或删除无效的用户授权,以解决此错误。