Amazon Relational Database Service (Amazon RDS) for MySQL DB インスタンスの関数、プロシージャ、トリガーを有効にしたいと考えています。
解決策
Amazon RDS はマネージドサービスであり、システムアクセス (SUPERUSER 権限) を提供しません。バイナリロギングを有効にする場合は、DB インスタンスのカスタムデータベース (DB) パラメータグループで log_bin_trust_function_creators を true に設定します。
DB パラメータグループを指定せずに DB インスタンスを作成した場合、Amazon RDS は新規のデフォルト DB パラメータグループを作成します。詳細については、「パラメータグループの概要」を参照してください。
Amazon RDS for MySQL DB インスタンスの関数、プロシージャ、トリガーを有効にするには、次の手順を実行します。
- DB パラメータグループを作成します。
- カスタム DB パラメータグループを変更し、log_bin_trust_function_creators の値を 1 に設定します。
注: log_bin_trust_function_creators=1 を設定すると、Amazon RDS はバイナリログに unsafe イベントを書き込む場合があります。バイナリロギングはステートメントベースであり、次の例のような形式です: (binlog_format=STATEMENT)
- [変更を保存] を選択します。
注: この DB パラメータグループは、5 分以上待ってから DB インスタンスで使用します。
- ナビゲーションペインで [データベース] を選択します。
- DB パラメータグループに関連付ける DB インスタンスを選択します。
- [変更] を選択します。
- DB インスタンスに関連付けるパラメータグループを選択します。
- DB インスタンスを再起動します。
注: パラメータグループ名は即時変更されます。Amazon RDS は、インスタンスを再起動した後にパラメータグループの変更を適用します。フェイルオーバーは発生しません。
既にカスタムパラメータグループを使用している場合は、手順 2と3 のみを実行してください。log_bin_trust_function_creators は動的パラメータであるため、DB を再起動する必要はありません。
MySQL DB インスタンスで自動バックアップを有効にした場合、バイナリロギングも有効になります。トリガーの作成する場合、次のエラーメッセージが表示される場合があります。
「ERROR 1419 (HY000): You don't have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable) (SUPER 権限が付与されておらず、バイナリロギングが有効になっています (安全性の低い log_bin_trust_function_creators 変数が適している場合があります)」
このエラーが発生した場合は、log_bin_trust_function_creators パラメータをレビューします。パラメータが 1 に設定されていない場合は、値を 1 に更新します。パラメータを 1 に設定しても Access denied エラーが解消されない場合は、「mysqldump を使用して Amazon RDS for MySQL DB インスタンスにデータをインポートする際に発生する 1227 エラーと definer エラーを解決する方法を教えてください」を参照してください。
log_bin_trust_function_creators パラメータの詳細については、MySQL のウェブサイトで「log_bin_trust_function_creators」および「Stored program binary logging」を参照してください。
関連情報
マルチ AZ DB クラスターで DB クラスターのパラメータグループを使用する