自動バックアップが有効になっている Amazon RDS MySQL DB インスタンスにデータをインポートするときに ERROR 1227 を解決する方法を教えてください。

最終更新日: 2020 年 11 月 20 日

mysqldump を使用して作成された論理バックアップを、自動バックアップが有効になっている Amazon Relational Database Service (Amazon RDS) for MySQL DB インスタンスにインポートしました。以下のようなエラーが表示されます。

「Error: 1227 SQLSTATE: 42000 (ER_SPECIFIC_ACCESS_DENIED_ERROR) アクセスが拒否されました。この操作には %s 権限 (1 つ以上) が必要です」

簡単な説明

このエラーはデータベースでバイナリログが有効になっていて、保存されたオブジェクト (トリガー、ビュー、関数、またはイベント) が mysqldump ファイルに含まれている場合に発生します。詳細については、バイナリログの MySQL ドキュメントをご参照ください。

create 文が「NO SQL」、「READS SQL DATA」、または「DETERMINISTIC」キーワードを含まない場合、MySQL はそれらのオブジェクトを作成できず、インポートはエラー 1227 で失敗します。

解決方法

エラー 1227 を解決するには、log_bin_trust_function_creators のパラメータグループ値を 1 に変更します。

この状態を緩和し、すべてのオブジェクトのインポートを許可するには、Amazon RDS カスタム DB パラメータグループの log_bin_trust_function_creators グローバルシステム変数を 1 に設定します。詳細については、「DB パラメータグループのパラメータの変更」を参照してください。

注: デフォルトのパラメータグループの値を変更することはできません。代わりに、デフォルトのパラメータグループが現在 DB インスタンスに関連付けられている場合は、カスタムパラメータグループを DB インスタンスに関連付けます。新しいパラメータグループを RDS DB インスタンスに関連付けてから、DB インスタンスを再起動する必要があります。

DB インスタンスにカスタムのパラメータグループがアタッチされている場合、以下を実行します。

  1. Amazon RDS コンソールを開き、ナビゲーションペインから [パラメータグループ] を選択します。
  2. インスタンスに関連付けられているカスタムのパラメータグループ名を選択します。
  3. log_bin_trust_function_creators を [パラメータのフィルター] フィールドに入力してから [パラメータ編集] を選択します。
  4. (log_bin_trust_function_creators の値) を 1 に変更します。
  5. [変更を保存] を選択します。
    注: このパラメータは動的で、customer パラメータグループは既に DB インスタンスに関連付けられているため、Amazon RDS はこの変更をすぐに適用します。詳細については、「DB パラメータグループを使用する」を参照してください。

RDS DB インスタンスにデフォルトのパラメータグループがアタッチされている場合は、以下を実行します。

  1. Amazon RDS コンソールを開いてから、ナビゲーションペインから [パラメータグループ] を選択します。
  2. [パラメータグループの作成] を選択し、DB インスタンスに一致する [パラメータグループファミリー] をクリックします。
  3. [グループ名] と [説明] を入力してから、[作成] を選択します。
  4. 新しいパラメータグループを選択し、log_bin_trust_function_creators を [パラメータのフィルター] フィールドに入力します。
  5. [パラメータ編集] を選択し、 (log_bin_trust_function_creators の値) を 1 に変更します。
    注: エラーが発生しているターゲットの DB インスタンスに、同じパラメータグループがアタッチされていることを確認してください。
  6. [変更を保存] を選択します。
  7. ナビゲーションペインから [データベース] を選択します。
  8. DB インスタンスを選択し、[Modify★] を選択します。
  9. [Database options★] 下で、作成した新しいパラメータグループを選択します。
  10. [続行] を選択します。
  11. [すぐに適用] または [次の定期メンテナンス期間中に適用] を選択します。
  12. [DB インスタンスを変更] を選択します。
  13. DB インスタンスを手動で再起動すると、パラメータグループのステータスが同期になります。
    注: 新しく関連付けられたパラメータグループに変更を適用するには、DB インスタンスを手動で再起動する必要があります。詳細については、「DB パラメータグループを使用する」を参照してください。

バイナリログまたは自動バックアップを有効にしており、ダンプを Amazon RDS MySQL DB インスタンスにインポートしようとしたときにこのエラーが発生する場合は、必ず log_bin_trust_function_creators パラメータを設定していることを確認してください。詳細については、「mysqldump を使用して Amazon RDS for MySQL インスタンスにデータをインポートするときに起こる definer エラーを解決する方法を教えてください」を参照してください。