我想要為 Amazon Relational Database Service (Amazon RDS) for MySQL 資料庫執行個體開啟函數、程序和觸發器。
解決方案
Amazon RDS 是受管服務,且不提供系統存取權限 (SUPER 權限)。如果您開啟二進位記錄,請在資料庫執行個體的自訂資料庫 (DB) 參數群組中將 log_bin_trust_function_creators 設定為 true。
如果您建立資料庫執行個體而未指定資料庫參數群組,則 Amazon RDS 會建立新的預設資料庫參數群組。如需詳細資訊,請參閱使用參數群組。
若要為 Amazon RDS for MySQL 資料庫執行個體開啟函數、程序和觸發器,請完成下列步驟:
- 建立資料庫參數群組。
- 修改自訂資料庫參數群組,然後設定參數:log_bin_trust_function_creators=1
- 選擇儲存變更。
**注意事項:**在與資料庫執行個體搭配使用資料庫參數群組之前,請至少等待 5 分鐘。
- 在導覽窗格中,選擇資料庫。
- 選擇要與資料庫參數群組相關聯的資料庫執行個體。
- 選擇修改。
- 選取要與資料庫執行個體相關聯的參數群組。
- 重新啟動資料庫執行個體。
**注意事項:**參數群組名稱會立即變更,但是在您重新啟動沒有容錯移轉的執行個體之前不會套用參數群組變更。
如果您已經使用自訂參數群組,則只需完成步驟 2-3。參數 log_bin_trust_function_creators 為不需要重新啟動資料庫的動態參數。
為 MySQL 資料庫執行個體開啟自動備份時,也會開啟二進位記錄。建立觸發器時,可能會收到下列錯誤訊息:
「錯誤 1419 (HY000): 您沒有 SUPER 權限,並且已啟用二進位記錄 (您可能想要使用較不安全的 log_bin_trust_function_creators 變數)」
如果收到此錯誤,請將 log_bin_trust_function_creators 參數修改為 1。這允許資料庫執行個體上的函數、程序和觸發器。如果將參數設定為 1 後仍然出現拒絕存取錯誤,請參閱如何解決使用 mysqldump 將資料匯入到 Amazon RDS for MySQL 資料庫執行個體時的 1227 和定義器錯誤?
**注意事項:**設定 log_bin_trust_function_creators=1 時,不安全的事件可能會寫入二進位日誌。二進位記錄是根據 (binlog_format=STATEMENT) 的陳述式。
如需參數 log_bin_trust_function_creators 的更多詳細資訊,請參閱 MySQL 網站上的 log_bin_trust_function_creators 和儲存程式二進位記錄。
相關資訊
修改資料庫叢集參數群組中的參數