Amazon Relational Database Service (Amazon RDS) for MySQL DB インスタンスの関数、プロシージャー、トリガーをオンにするにはどうすればよいですか?
解決方法
Amazon RDS はマネージド型サービスです。SYS アクセス (SUPER 権限) は提供されません。バイナリログ記録がオンになっている場合は、DB インスタンスのカスタム DB パラメータグループで log_bin_trust_function_creators を true に設定します。
DB パラメータグループを指定せずに DB インスタンスを作成した場合、新規のデフォルト DB パラメータグループが Amazon RDS により作成されます。詳細については、「DB パラメータグループを使用する」を参照してください。
- DB パラメータグループを作成します。
- カスタム DB パラメータグループを変更し、パラメータを設定します: log_bin_trust_function_creators=1
- [Save changes] (変更を保存) を選択します。
**注:**この DB パラメータグループは、5 分以上待ってから DB インスタンスで使用します。
- ナビゲーションペインで [データベース] をクリックします。
- DB パラメータグループに関連付ける DB インスタンスを選択します。
- [Actions] (アクション)、[Modify] (変更) の順に選択します。
- DB インスタンスに関連付けるパラメータグループを選択します。
- DB インスタンスを再起動します。
注: パラメータグループ名はすぐに変更されますが、パラメータグループの変更は、フェイルオーバーなしでインスタンスを再起動するまで適用されません。
カスタムパラメータグループを既に使用している場合は、ステップ 2~3 のみを実行してください。log_bin_trust_function_creators パラメータは動的パラメータであるため、DB を再起動する必要はありません。
MySQL DB インスタンスのために自動バックアップをオンにすると、バイナリログ記録もオンになります。トリガーの作成時に、次のエラーメッセージが表示される場合があります。
「ERROR 1419 (HY000): 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)」(エラー1419 (HY000): SUPER 権限が付与されておらず、バイナリログ記録が有効になっています (安全性の低い log_bin_trust_function_creators 変数を使用することをお勧めします))
このエラーが表示された場合は、log_bin_trust_function_creators パラメータを 1 に変更します。これにより、関数、プロシージャー、トリガーが DB インスタンスで許可されます。
注: log_bin_trust_function_creators=1 を設定すると、安全でないイベントがバイナリログに書き込まれる場合があります。バイナリログ記録はステートメントベースです (binlog_format=STATEMENT)。
パラメータ log_bin_trust_function_creators の詳細については、MySQL ドキュメントの「log_bin_trust_function_creators」および「Stored program binary logging」(ストアドプログラムのバイナリログ記録) を参照してください。
関連情報
mysqldump を使用して Amazon RDS for MySQL DB インスタンスにデータをインポートする際に発生する 1227 エラーと definer エラーを解決する方法を教えてください