RDS导出的库导入到另一个RDS出现权限错误
1 | [Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) |
一、错误原因
- 导入RDS MySQL 实例:SQL 语句中含有需要 Supper 权限才可以执行的语句,而 RDS MySQL不提供 Super 权限,因此需要去除这类语句。
- 本地 MySQL 实例没有启用 GTID。
二、解决方案
(1) 去除 DEFINER 子句
1
sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ ' your.sql > your_revised.sql
(2) 去除 GTID_PURGED 子句
1
awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }' your.sql | grep -iv 'set @@' > your_revised.sql
三、验证
修改完毕后,通过下面的语句检查是否合乎要求
1 | egrep -in "definer|set @@" your_revised.sql |
参考:RDS for MySQL权限问题(错误代码:1227,1725)
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2021/06/07/RDS-for-MySQL导入库权限问题/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!