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错误。