很久没有码文了,尤其这一类的。这个问题是今天同事碰到的,帮看的时候的一点思路。顺便除草记录下。

采用的是RDS导入原先从自有机器中导出来的MYSQL表结构文件,结果在导入的过程中发现报错:

1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation

错误的原因是:

在RDS中导入的sql文件中含有需要 Supper 权限才可以执行的语句(如:DEFINER=`root`@`localhost`*),而 RDS实例中的 MySQL不提供 Super 权限,所以需要去除这类声明了需要super权限的语句。

在Linux中,可执行以下语句去除:

sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ ' your.sql > your_revised.sql

而1725的报错也是类似,需检查去除类似于如下的代码:

SET @@GLOBAL.GTID_PURGED="xxxxxxx"

在Linux可使用如下语句去除:

awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }' your.sql | grep -iv 'set @@' > your_revised.sql

除草完。