MySQL的/亚马逊RDS错误:“你没有SUPER权限的......”(MySQL/Amazon R

2019-06-26 10:59发布

我试图我的MySQL数据库从亚马逊EC2复制到RDS:

我successfuly做了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..以各种不同的方式,但我得到的错误,当我试图做到这一点。 打字mysql > FLUSH privileges; 也不行。

我是一个MySQL初学者对于这样一个简单的问题,很抱歉。 思考?

Answer 1:

每http://getasysadmin.com/2011/06/amazon-rds-super-privileges/ ,你需要设置log_bin_trust_function_creators到1 AWS控制台 ,加载你的转储文件没有错误。

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

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

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



Answer 2:

  1. 打开RDS Web控制台。
  2. 打开“参数组”选项卡。
  3. 创建一个新的参数组。 在对话框中,选择MySQL的家人你的MySQL数据库版本兼容,给它一个名称并确认。 选择刚才创建的参数组,并出具“编辑参数”。
  4. 寻找参数“log_bin_trust_function_creators”并将其值设置为“1“。
  5. 保存更改。
  6. 打开“实例”选项卡。 展开你的MySQL实例,并出具了“实例行动”命名的“修改”。
  7. 选择刚才创建的参数组,并启用“立即应用”。
  8. 点击“继续”,确认更改。
  9. 等待要完成的“修改”操作。
  10. 再次,打开“实例”选项卡。 展开你的MySQL实例,并展开“实例操作”选项卡,选择“重新启动”。


Answer 3:

在转储文件触发器和存储过程的问题是,这些定义包括谁该存储过程应,定义者可以创建用户。 用户很可能不会在RDS存在,所以一个错误,然后提高。 为了能够加载转储文件可以删除使用SED或Perl定义者和创建谁是执行导入用户的存储过程/触发器。

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

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

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

如前面的回答说,你应该设置DB参数:

log_bin_trust_function_creators = 1


Answer 4:

作为AWS文档中定义触发器,过程,因为二进制日志功能是默认启用的功能默认情况下禁用。 禁用基本上使得你的数据库更安全,但如果你已经正确地通过网络安全都不会有问题。

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

还创建过程时,你不应该使用定义者。 一个简单的sed命令可以将其删除。



Answer 5:

除了编辑

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



Answer 6:

对于我来说,在这需要超级特权我的转储文件只有2个命令:

  • SET @@GLOBAL.gtid_purged
  • SET @@SESSION.SQL_LOG_BIN

按照mysqldump的文档 ,你可以禁用这些--set-gtid-purged=OFF

然后看着男人的mysqldump :

使用ON如果目的是部署只使用了一些来自倾倒服务器的数据的新的复制奴隶。 使用OFF如果意图是拓扑中复制来修复表。 使用OFF如果意图是复制不相交的,今后仍将如此复制拓扑之间的表。

所以,我决定增加--set-gtid-purged=OFF到我mysqldump命令,然后我可以成功地导入生成的转储文件。



文章来源: MySQL/Amazon RDS error: “you do not have SUPER priviledges…”