MySQL / Amazon RDS错误:“您没有SUPER权限…”

我试图将我的MySQL数据库从Amazon EC2复制到RDS:

我成功地做了我的数据库的mysqldump到我的根文件夹使用这个:

 root@ip-xx-xx-xx-xx:~# mysqldump my_database -u my_username -p > my_database.sql 

然后我试图将这个.sql文件传输到我的新的RDS数据库:

 root@ip-xx-xx-xx-xx:~# mysql my_database -u my_username -p -h my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql 

不幸的是,我得到以下错误信息:

 You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 

我尝试着用各种方法让GRANT SUPER..但当我尝试这样做的时候,我也遇到了错误。 inputmysql > FLUSH privileges; 也不起作用。

我是一个mysql初学者,所以很抱歉这样一个简单的问题。 思考?

根据http://getasysadmin.com/2011/06/amazon-rds-super-privileges/ ,您需要在AWS控制台中将log_bin_trust_function_creators设置为1,以无错地加载转储文件。

如果您想忽略这些错误,并加载转储文件的其余部分,则可以使用-f选项:

 mysql -f my_database -u my_username -p -h my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql 

-f将报告错误,但会继续处理转储文件的其余部分。

  1. 打开RDS Web控制台。
  2. 打开“参数组”选项卡。
  3. 创build一个新的参数组。 在对话框中,select与您的MySQL数据库版本兼容的MySQL系列,给它一个名称并确认。 select刚创build的参数组并发出“编辑参数”。
  4. 查找参数“log_bin_trust_function_creators”并将其值设置为“1”。
  5. 保存更改。
  6. 打开“实例”选项卡。 展开您的MySQL实例并发出名为“修改”的“实例操作”。
  7. select刚创build的参数组并启用“立即应用”。
  8. 点击“继续”并确认更改。
  9. 再次打开“实例”选项卡。 展开您的MySQL实例并发出名为“修改”的“实例操作”。
  10. 不要忘记:打开“实例”选项卡。 展开您的MySQL实例并发出名为“Reboot”的“实例操作”。

转储文件中的触发器和存储过程的问题在于,这些定义包括应由DEFINER创build存储过程的用户。 用户很可能不存在于RDS中,因此会引发错误。 为了能够加载转储文件,您可以使用sed或Perl删除DEFINER,并与执行导入的用户创build存储过程/触发器。

 perl -pe 's/\sDEFINER=`[^`]+`@`[^`]+`//' < mysqldump.sql > mysqldump.fixed.sql 

现在你应该能够加载固定的转储文件

 mysql my_database -u my_username -p -h rds_host < mysqldump.fixed.sql 

如前面的答案所述,您应该设置数据库参数:

 log_bin_trust_function_creators = 1 

根据AWS文档中的定义,触发器,过程和函数默认处于禁用状态,因为缺省情况下启用了二进制日志logging。 禁用基本上使你的数据库更安全,但如果你已经通过networking妥善保护,这将无所谓。

按照这些步骤操作,您的问题将得到解决https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/

你也不应该在创build过程时使用定义者。 一个简单的sed命令可以删除它。

除了编辑

log_bin_trust_function_creators = 1

你需要从你的转储文件中删除所有的DEFINER ,检查下面的链接SED命令,可以帮助清理你的SQL转储文件。

https://www.percona.com/blog/2014/07/02/using-mysql-triggers-and-views-in-amazon-rds/#comment-10968243