MySQL Error number: MY-013368; Symbol: ER_TURNING_ON_PARTIAL_REVOKES; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: MY-013368; Symbol: ER_TURNING_ON_PARTIAL_REVOKES; SQLSTATE: HY000

Message: At least one partial revoke exists on a database. Turning ON the system variable ‘@@partial_revokes’.

MySQL错误 MY-013368(ER_TURNING_ON_PARTIAL_REVOKES)通常是由于数据库选项配置不当导致的。换句话说,由于部分撤销(partial revokes)没有正确开启,而捕获到这个错误,一般可以通过以下信息开始查询:

错误信息:

ERROR 1295 (HY000): To use GRANT, first activate partial revokes by running: UPDATE mysql.db SET Grant_priv=’Y’ WHERE Db=” AND User=”

错误说明:

这意味着,MySQL在开始使用GRANT命令授权之前,第一步必须把部分撤销(partial revoke)设置为“Y”。因此,在手动执行授权操作之前,必须先激活partial revoke。

常见案例

MySQL服务器运行正常,但在某个数据库上授权操作时,会报出这个错误,以下两个例子就会出现该错误:

1) 尝试从某个用户给另一个用户授予访问数据库的权限时:

GRANT ALL ON .* TO @localhost;

2) 尝试重置某个用户在某个数据库上的全部权限时:

REVOKE ALL ON .* FROM @localhost;

解决方法:

确认MySQL是否已启用partial revoke,若未开启,则应当做如下的操作:

步骤 1) 登录MySQL控制台

步骤 2) 运行下面的命令来启用partial revoke

UPDATE mysql.db SET Grant_priv=’Y’ WHERE Db=” AND User=”;

这会在MySQL表 “db” 中设置partial revoke权限,以便允许数据库账户在某个数据库中分配授权或撤销权限。

建议最好重新设置grant_priv权限,以确保正确的权限设置:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, GRANT OPTION ON .* TO @localhost;

此外,如果使用GRANT语句来授予权限时,需要访问MySQL表“user”,以获取有效的用户列表,这可以通过以下语句来完成:

SELECT User,Host FROM mysql.user;

另外,在确保启用partial revokes之后,还可以通过以下命令查看是否正确启动权限:

SHOW GRANTS FOR @localhost;

对于撤销权限操作,更多的情况是错误的数据库名称或者用户名造成的,比如:

REVOKE ALL ON FROM @localhost;

因此,在执行revoke语句前,需要确保正确的数据库名称以及用户名:

REVOKE ALL ON FROM @localhost;

最后,MySQL的错误 MY-013368(ER_TURNING_ON_PARTIAL_REVOKES)主要由于整个尝试授权或撤销操作之前尚未启用部分撤销(partial revoke)选项而引起的。可以通过更新mysql.db表中的grant_priv设置成“Y”来开启这个选项,然后再执行GRANT或REVOKE操作,恢复正确的权限设置,从而解决MY-013368错误。


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