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

最終更新日: 2020 年 6 月 24 日

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

「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 に変更します。

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

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

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

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

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

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

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