phpMyAdminでインポート時のエラー「#1227 – Access denied; you need ~」の対処法

ある案件で、WordPressを新しい環境に移行する際に、phpMyAdminでDBをインポートしようとしたら、以下のようなエラーが発生して、インポートできませんでした。

#1227 - Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation

WordPressの移行は何度か行っていたのですが、初めてのエラーだったので調べてみた所、ずばりな記事を見つけました。

目次

原因

WordPressの一部プラグイン(Real Media Library等)では、メディアライブラリ内の大量のフォルダやファイルを管理するため、関数をしているそうです。

ただ、セキュリティ上の理由から関数の実行は許可されたユーザーのみに指定されているようで、エクスポートしたDBに元のMySQLのホスト名とユーザー名が定義されてしまうため、インポート時にMySQLのホスト名とユーザー名が異なっていると、エラーになってしまうようです。

対処法

問題となっているSQLクエリの中に、以下のような文言が含まれていると思われます。

CREATE DEFINER=`User`@`host` FUNCTION

この中で、DEFINER=User@hostを削除して、CREATE FUNCTIONの形にすれば、新しいユーザーでもインポートできるようになります。

ちなみにWordPressの一部移行プラグインやバックアッププラグインでは、これを自動的に処理してくれるものもあるそうです。

よかったらシェアしてね!
目次