Mysql导入数据库提示 ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for

今天再复制服务器上数据库的时候(使用Mysql Workbench )提示1227错误,

数据库版本5.7.18,复制到的数据库也是5.7.18。

总结一下网上的几种方法:

方法一:

最直观的翻译是说权限的问题,一般是mysql的用户创建后没给权限,

select * from mysql.user where user='root'

查看权限后发现super_priv是为N,修改后导入还是无效;

方法二:

很多人是因为跨版本导入出现1227,然后说删除

SET @@SESSION.SQL_LOG_BIN= 0;

就能实现,我这边试了也不行;

最后是我的解决方法:

网上的方法我都试过还是导入不进去,

然后把提示中错误的地方都删掉,最后导入成功了- -,

其实和方法二很像,删除红框的内容,黄框是添加的内容(把SET相关的都删了,就能导入成功了):

删除的前面2处地方是在sql的最开始,

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED='55a52aed-75e6-11e8-971f-246e96771c90:785864-787738,
569cf9ca-b336-11e8-be4e-501d93ecc0b8:1-10040';

最后一次在sql的尾部。

SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;

 

 

 

常见问题处理之ERROR 1227 数据导入报错

 

 

使用mysqldump将本地数据导出,导入rds MySQL时。导入过程中可能会遇到以下错误:
ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
 
1.问题原因:MySQL导入用户的权限问题。
处于安全考虑,rds MySQL的最高权限用户root是没有super权限的,当前自建用户也不能有super权限。但是用户执行导入的sql中,包含需要super权限的语句,所以会报错。
如果源库开启了GTID特性,使用mysqldump 导出数据时,没有添加选项--set-gtid-purged=OFF,导出的sql中就有存在以下需要super权限执行的语句:
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED=´18f9a804-343b-11e5-a21d-b083fed01601:1-2´;
2.解决办法
办法1:导出语句中添加选项--set-gtid-purged=OFF重新导出,再导入即可。
mysqldump -uroot  -p -h192.168.0.50 -P8635 --databases test --set-gtid-purged=OFF --master-data=2--single-transaction --order-by-primary -r dump.sql
办法2:使用source方式导入,这种方式即使权限问题报错,剩余sql语句仍可继续执行,不影响最终数据。
mysql>source  /tmp/dump.sql
注意:sql文件的路径和权限
 
 
 mysql -hdb.com -P50003 -uroot -p'2sd7' open -e "source /root/open.sql"
 
 
 

posted on 2021-09-07 09:34  BillyLV  阅读(9788)  评论(0编辑  收藏  举报

导航