ワードプレスの移行後、ログイン時に「このページにアクセスするための十分なアクセス権がありません。」が出る

ワードプレスのサーバー間移行などを実行して、データベースレベル(SQL)でデータ移行した後、ログイン時に、
 
「このページにアクセスするための十分なアクセス権がありません。」
 
と出てログインできないトラブルに遭遇したので、メモしておきます。

 
特に、MySQLが3つしかないレンタルサーバーなどから、MySQLが10とか、20、もしくは無制限などのサーバーに移行する際に起こりがちかもしれません。

 
先に結論から言いますと、1つのMySQLしか使えないサーバーで、複数のワードプレスをインストールする場合は、テーブルの接頭辞(wp_)を、wp_hogehoge_とかに変更してインストールする形にすることが多いと思います。

そのようなサーバーから、複数のMySQLが利用できる場合は、データベースを分けられるので、テーブル接頭辞をwp_でインストールすると、接頭辞の違いから、ワードプレスの権限データを読み取れずにアクセスエラーになるようです。

うちの場合、phpMyAdminにエクスポートのSQLファイルを作成してもらって、それを移行後のデータベース上で、SQLを実行という感じで、移行するので、ハマりました。

 
対処方法は、接頭辞を合わせる(こっちはやったことない)か、移行後のデータをphpMyAdmin等で修正する、かどっちかになると思います。
(稀に、移行前後のユーザーIDが違うためにエラーというケースもあるみたいですけど)

 
修正するデータは、移行後のデータベースで、下記のような感じです。

 
wp_options の

 「wp_接頭辞_user_roles」となっているのを、「wp_user_roles」に修正

 
wp_usermetaの

 「wp_接頭辞_capabilities」を「wp_capabilities」に修正

でログインできるようになりました。

 
ちなみに、上記2つでログインできるようになるのですが、下記のデータがゴミデータとして残るので、修正して再利用した方がよさそうです。
 
 「wp_接頭辞_dashboard_quick_press_last_post_id」を「wp_dashboard_quick_press_last_post_id」
 「wp_接頭辞_user-settings」を「wp_user-settings」
 「wp_接頭辞_user-settings-time」を「wp_user-settings-time」
 「wp_接頭辞_user_level」を「wp_user_level」
 

wp_usermetaのデータは、ユーザーIDごとにありますので、複数ユーザーが居れば、その数だけwp_usermetaのデータを修正する必要があります。
 
まぁ、めんどくさいですね・・・。
 
 
 

↓拡散のお手伝いお願いします