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操作更好的辦法,請回復說明。謝謝。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM