Amazon RDS MySQL インスタンスでレプリケーションまたは自動バックアップを有効にしたときに起こる ERROR 1227 を解決する方法を教えてください。

最終更新日: 2019 年 4 月 23 日

mysqldump を使用して、MySQL インスタンス用の Amazon Relational Database Service (Amazon RDS) にデータをインポートしました。けれども、レプリケーションまたは自動バックアップを有効にしようとすると、次のようなエラーが表示されました。

「Error: 1227 SQLSTATE: 42000 (ER_SPECIFIC_ACCESS_DENIED_ERROR) Access denied; you need (at least one of) the %s privilege(s) for this operation.」

簡単な説明

このエラーはデータベースでバイナリログが有効になっていて、mysqldump ファイルにオブジェクト (トリガー、ビュー、関数、またはイベント) が含まれている場合に発生します。詳細については、「The Binary Log★」の 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 パラメータグループのパラメータの変更」をご参照ください。

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

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

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

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

  1. Amazon RDS コンソールを開き、次にナビゲーションペインで [Parameter groups★] を選択します。
  2. [Create a parameter group★] を選択し、インスタンスに一致する Parameter group family★ を選択します。
  3. グループ名説明を入力してから、[Create★] を選択します。
  4. 新しいパラメータグループを選択し、log_bin_trust_function_creators を [Filter parameters★] フィールドに入力します。
  5. [Edit parameters★] を選択し、Values (log_bin_trust_function_creators の) を 1 に変更します。
    注: エラーが発生しているターゲットのインスタンスに、同じパラメータグループが添付されていることを確認してください。
  6. [Save changes★] を選択します。
  7. ナビゲーションペインから [Databases★] を選択します。
  8. DB インスタンスを選択し、[Modify★] を選択します。
  9. [Database options★] 下で、作成した新しいパラメータグループを選択します。
  10. [Continue★] を選択します。
  11. [Apply immediately★] または [Apply during the next scheduled maintenance window★] を選択します。
  12. [Modify cluster★] を選択します。
  13. DB インスタンスを手動で再起動すると、パラメータグループのステータスが同期になります。
    注: 新しく関連付けられたパラメータグループに変更を適用するには、DB インスタンスを手動で再起動する必要があります。詳細については、「DB パラメータグループを使用する」をご参照ください。

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