Amazon RDS MySQL数据库还原时 log_bin_trust_function_creators 错误解决办法

使用了Amazon AWS EC2免费云空间,数据库实例采用Amazon RDS。原来在Windows Server上有一个存在大量数据的MySQL数据库。现在需要在Amazon RDS上还原这个MySQL数据库,勾掉Views(因为它会要求SUPER权限,而Master User无此权限,毕竟是托管的RDS),只留下Tables,如下图(使用Navicat):

图1:勾掉Views,因为RDS上的Masteruser无Super权限,无法还原Views对象

但在还原时,仍然出现如下的错误信息:

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

经查询,是log_bin_trust_function_creators值为off导致,因为Table中有Trigger,如果不创建Trigger,不会出现这样的错误信息,但Trigger必须创建,在网络查询解决方案,是如下的办法:

使用设置命令:

set global log_bin_trust_function_creators=1; 

但由于没有Super权限而无法完成。

永久解决方案如下:

 linux系统, 在/etc/my.cnf 文件中,[mysqld]部分加上:
 windows系统,在my.ini文件中,[mysqld]部分加上:
log_bin_trust_function_creators=1

就可以还原上备份数据库表中的Trigger。

实际情况是,对于Amazon RDS,是傻瓜型的配置,不允许用户配置my.cnf(也根本找不到这个文件),所以,配置办法是对其中的Parameter进行配置,从而对MySQL实例进行操作。在Parameter Group中,添加一个(注:默认的Parameter Group是无法修改的),命名后进行修改,将log_bin_trust_function_creators值设置为1;

Amazon RDS对参数配置的方法有三种,具体可参考http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html

控制台方式(AWS Management Console);

命令行方式(CLI);

API方式;

这里使用控制台方式解决:

1、在RDS控制台,右边导航栏有“Parameter Groups”链接,点击“Create DB Parameters Group”,创建“Parameters Group”

2、选择版本、名称和描述

3、创建好以后,即可对里面的参数进行编辑(强调:MySQL默认的Parameter Group是无法编辑参数),这里是将log_bin_trust_function_creators值由default改为1,保存退出;

4、新创建一个RDS实例,在“Configure Advanced Settings”中,Parameter Group选项的下拉列表中,选择刚刚创建并修改好的组,如下图:

图2:在新建的RDS Instance中,不使用默认的Parameter Group,而使用自己创建并编辑的组

4-1、或者,在已经创建的RDS实际中,选中一个实例,在界面顶部的“Instance Actions”下拉菜单中,点击“Modify”,对Parameter Group进行修改,如下图:

图3:对已经存在的Parameter Group进行修改(图片中未修改前的状态,为MySQL 5.6默认的Parameter Group)

5、坐等RDS实例创建完成(或修改完成)。

再进行数据库的Restore,包含Triggers的Table可以成功还原。

说明:对于Views,在Amazon RDS上由于没有SUPER权限无法自动还原。可以在Tables还原后,手工创建View并将源DB中的View定义复制过来。如果哪位网友有对Amazon RDS操作更好的办法,请回复说明。谢谢。

 

Amazon RDS MySQL数据库还原时 log_bin_trust_function_creators 错误解决办法

时间: 2024-12-20 21:10:33

Amazon RDS MySQL数据库还原时 log_bin_trust_function_creators 错误解决办法的相关文章

mysql中连接失败2003错误解决办法

在使用mysql数据库,新建连接时,会报2003-Can't connect to server on 'localhost'(10038)错误,原因主要是MYSQL服务没有启动起来,但是进入:计算机——管理——服务中,找不到MYSQL服务,主要解决办法: 方法1: 1.找到mysql的安装路径下的 bin 文件夹下,例如我的是:"E:\dataBase\mySQL\bin"; 2.找到bin文件夹下的 “mysqld.exe” 可执行文件,双击,这样mysql服务就可以在服务中找到了

mysql数据库存储中文数据的解决办法

我在学习django中admin模块的时候,登录进入后台操作页面,输入中文数据,但保存之后全是乱码(全是“????????????”),然后就开始了解决问题之路. 1.首先百度搜索,最主流的方法也是一劳永逸的方法是:修改MySQL的配置文件my.ini.我也是按照这个方法做的,只是搜索出来的方法不详细,或者说不适合MySQL的新版本. 2.在MySQL根目录下寻找my.ini配置文件,然而我装的是MySQL-5.6.30,在根目录下只找到了my-default.ini文件.把my-default

mysql 服务意外停止1067错误解决办法小结

今天在配置服务器时安装mysql5.5总是无法安装,查看日志错误提示为1067错误,下面来看我的解决办法 事件类型: 错误 事件来源: Service Control Manager 事件种类: 无 事件 ID: 7034 日期: 2012-11-1 事件: 9:25:52 用户: N/A 计算机: SVCTAG-HZWGF3X 描述: 服务 MySQL 意外停止.这发生了 1 次. 有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮

(整)deepin下mysql的安装与部分错误解决办法

deepin(深度)是国产Linux系统,程序员肯定要了解Linux系统啦,但是在程序安装上可能会有些不习惯,现在让我们来看看mysql在deepin上的安装过程. 1.傻瓜式命令行安装 这也是Linux系统的一大爽点,不需要跑去浏览器找安装包了,具体的安装可以看https://blog.csdn.net/qq_37341357/article/details/79019112 ,上面写的很清楚. 但是有的人可能会遇到我遇到的问题,安装mysql server时并没有让你在安装过程中输入启动my

linux下修改mysql数据库编码后无法启动解决办法

linux下老版本的Mysql修改数据库编码的方法是 修改my.cnf vi /etc/my.cnf 在[client]下添加 default-character-set=utf8 在[mysqld]下添加 default-character-set=utf8 在新的版本中如果这样修改的话,会造成无法启动的错误,结果方法是 在[mysqld]下把default-character-set=utf8换成 重启mysql可以使用 sudo /etc/init.d/mysql restart 注意修改

failed to open file mysql,导入mysql数据库打不开的解决办法

使用mysql导入数据库时很不凑巧的出现: Failed to open file 'xxx.sql', error: 2 出现这种情况时什么都不要干,第一在你的mysql中设定编码模式 set names 编码模式: 第二尽量你导入的数据库的名字不要是中文,先把他改为英文名再导入试试.如若不行请试以下方法: 主要的原因在于mysql没权限读取你指定导入盘符的权限. so我们此时应该给mysql 加上读取权限 转载请注明出处:http://blog.csdn.net/zch501157081/a

MySQL数据库传输BLOB类型数据丢失 解决办法

修改MySQL安装目录下my.ini文件配置: 添加 max_allowed_packet = 16M # MySQL Server Instance Configuration File # ---------------------------------------------------------------------- # Generated by the MySQL Server Instance Configuration Wizard # # # Installation I

Navicat for mysql 远程连接 mySql数据库10061、1045错误问题 (转)

远程使用Navicat for mysql 客户端软件连接 mySql数据时,连接出现 2003-Can’t connect to MySQL on ’192.168.1.2’(10061)错误时,是由于MySQL不准许远程连接. 修改方法如下: 1:在服务端MySQL文件夹下找到my.ini文件.修改bind-address=127.0.0.1 为 bind-address=0.0.0.0 (在MySQL 5的my.ini中未发现此项) 2:重新启动MySQL服务. 测试连接情况: 如果没有给

Configure Amazon RDS mysql to store Chinese Characters

Configure Amazon RDS mysql to store Chinese Characters https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-charac