ワードプレスのサーバー間移行などを実行して、データベースレベル(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のデータを修正する必要があります。
まぁ、めんどくさいですね・・・。