1/25/2012

このページにアクセスするための十分なアクセス権がありません。

サーバを移行するに当たってWordPressも移行した

手順は以下

1.データベースのテーブルを旧サーバからのエクスポート
2.ディレクトリ一式のダウンロードとアップロード
3.環境設定(.htaccess、php.ini)
4.ファイル編集(wp-config.php)
5.データベースのテーブルを新サーバへインポート

旧サーバからエクスポートしたデータは新サーバにインポートする前に
まず必要な書き換えを行う

■サーバだけが変わった場合は
基本的にサーバの絶対パスだけを置換する

■サーバとプリフィクスが変わった場合は
サーバの絶対パスに加えてテーブル名を付け直す必要がある

今回は後者だったのだが
適宜書き換えてインポート完了して
ブラウザから呼び出すと表示は出来たものの
管理画面にログインすると次のような非常事態が起きた

このページにアクセスするための十分なアクセス権がありません。


アクセス権がなくなったのは
要するにアクセス権に関与するデータに何かしら不整合があるからで
ググってみるとプリフィクスが反映されてる値があって
これらのプリフィクスを書き換えなければならなかったのだ

データベースのSQLで以下を実行
※oldは旧サーバのプリフィクス、newは新サーバのプリフィクスに差し替えてください

UPDATE new_options SET option_name = 'new_user_roles' WHERE option_name = 'old_user_roles';
UPDATE new_usermeta SET meta_key = 'new_capabilities' WHERE meta_key = 'old_capabilities';
UPDATE new_usermeta SET meta_key = 'new_user_level' WHERE meta_key = 'old_user_level';