代码改变世界

MySQL ERROR 1227 (42000)错误处理

2022-11-30 18:35  abce  阅读(7040)  评论(0编辑  收藏  举报

在还原数据库的时候,遇到以下报错:

ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation

从错误信息看,似乎是用户权限不够。但是,实际上不是权限的问题。

解决方案1:

重新mysqldump一份数据,在导出的时候,加上参数--set-gtid-purged=OFF,禁掉全局事务标识符。全局事务标识符会导致这个错误。

 

比如:

mysqldump --set-gtid-purged=OFF dbname > dump.sql


解决方案2:
直接修改备份生成的dump文件,移除其中的一些行。
在修改之前,建议将备份文件再做一次备份。

移除以下三行:

SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;

 

然后再重新还原数据。