WP管理サイトのドメインサーバー・データベースの移行

移行元のサイトバックアップ

まずはじめに移行元のサイトのバックアップを必ず撮っておきましょう。

バックアップととっておくファイル
・サーバー内のWPファイル全て
・データベースのダンプファイル(.sql)

・サーバー内のWPファイル全て
特にWPファイルで大事なのが”wp-config.php”ファイルはサーバーとデータベースを紐付ける大事なファイルなので中に書いてある中に書いてある記述書き換えないこと

・データベースのダンプファイル(.sql)
こちらはサーバーによってエクスポートする内容が変わってくるので覚えておいてください。
①エクスポートタブを選択

②番の項目は同じテーブル内に複数のサイトのデータが入っている場合は移行サイトの接頭辞をwp-config.phpで確認してそこだけを選択(選択部分はグレーになる)する。

③のチェックボックスはレンタルサーバーによって違うので知ってるサーバー会社のだけ記載しておきます。
ダンプファイルエクスポート時の各連絡サーバーのチェックボックス詳細
123サーバー
チェックなし:CREATE DATABASE / USE コマンドを追加する

さくらサーバー
チェックあり:DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT を追加
(構造の枠内のチェックボックスは全てチェックをつける)

移行先のデータベースに同じ接頭辞がある場合

移行先のデータベースに同じ接頭辞がある場合は移行元の接頭辞を変えなければいけません。
例えば下の図のようにAデータベースからBデータベースに移行するとき同じ名前の接頭辞がある場合は
接頭辞を変えないといけません。

その際は移行元でエクスポートする前に以下の記述をSQLタブをクリックして記述します。
(接頭辞の変更)
“重複している接頭辞_”は移行前の接頭辞お入力。
“変更したい接頭辞_”は移行先で使う接頭辞を入力

ALTER TABLE 重複している接頭辞_commentmeta RENAME TO 変更したい接頭辞_commentmeta;
ALTER TABLE 重複している接頭辞_comments RENAME TO 変更したい接頭辞_comments;
ALTER TABLE 重複している接頭辞_links RENAME TO 変更したい接頭辞_links;
ALTER TABLE 重複している接頭辞_options RENAME TO 変更したい接頭辞_options;
ALTER TABLE 重複している接頭辞_postmeta RENAME TO 変更したい接頭辞_postmeta;
ALTER TABLE 重複している接頭辞_posts RENAME TO 変更したい接頭辞_posts;
ALTER TABLE 重複している接頭辞_terms RENAME TO 変更したい接頭辞_terms;
ALTER TABLE 重複している接頭辞_term_relationships RENAME TO 変更したい接頭辞_term_relationships;
ALTER TABLE 重複している接頭辞_term_taxonomy RENAME TO 変更したい接頭辞_term_taxonomy;
ALTER TABLE 重複している接頭辞_usermeta RENAME TO 変更したい接頭辞_usermeta;
ALTER TABLE 重複している接頭辞_users RENAME TO 変更したい接頭辞_users;

その後”実行ボタン”を押すと希望の接頭辞で生成されるので生成された接頭辞をエクスポートします。

移行先のデータベースでインポート

移行元のデータベースをエクスポートしたら、移行先のデータベースを開きインポートします。

エラーが出ずにインポートが出来たら重複してる接頭辞を変えたファイルのみ変えきれていない接頭辞を変えます
またSQLタブで以下の記述を入力します。

“変更したい接頭辞_”を入力
“重複してる接頭辞_”を入力

UPDATE 変更したい接頭辞_options SET option_name = '変更したい接頭辞_user_roles' WHERE option_name = '重複している接頭辞_user_roles';
UPDATE 変更したい接頭辞_usermeta SET meta_key = '変更したい接頭辞_capabilities' WHERE meta_key = '重複している接頭辞_capabilities';
UPDATE 変更したい接頭辞_usermeta SET meta_key = '変更したい接頭辞_user_level' WHERE meta_key = '重複している接頭辞_user_level';
UPDATE 変更したい接頭辞_usermeta SET meta_key = '変更したい接頭辞_dashboard_quick_press_last_post_id' WHERE meta_key = '重複している接頭辞_dashboard_quick_press_last_post_id';
UPDATE 変更したい接頭辞_usermeta SET meta_key = '変更したい接頭辞_user-settings' WHERE meta_key = '重複している接頭辞_user-settings';
UPDATE 変更したい接頭辞_usermeta SET meta_key = '変更したい接頭辞_user-settings-time' WHERE meta_key = '重複している接頭辞_user-settings-time';

これで接頭辞を変えたのでダンプファイルに記述してある移行元のドメインを移行先のドメインに変更してあげる記述をSQLタブ内に記載します。
以下の記述で”移行先の接頭辞_”を移行先の接頭辞を置き換える
“移行元のドメイン”移行元のドメインを置き換える
“移行先のドメイン”に移行先のドメインを置き換える

UPDATE 移行先の接頭辞_options SET option_value =REPLACE(option_value,"移行元のドメイン","移行先のドメイン");
UPDATE 移行先の接頭辞_postmeta SET meta_value =REPLACE(meta_value,"移行元のドメイン","移行先のドメイン");
UPDATE 移行先の接頭辞_posts SET post_content =REPLACE(post_content,"移行元のドメイン","移行先のドメイン");
UPDATE 移行先の接頭辞_posts SET guid =REPLACE(guid,"移行元のドメイン","移行先のドメイン");

サーバーにワードプレス一式とデータベースの移行を行った後、ログイン画面→管理画面に移動するときに
管理画面に移動せず”このページにアクセスするための十分なアクセス権がありません。”と書かれる場合がありますそのときは
phpmyadminの”接頭辞01_options”のテーブルでオプションネームの接頭辞が変更できてないときがあるのでSQLに移動し以下のコードを入力する

UPDATE 変更した接頭辞options SET option_name = '変更した接頭辞user_roles' WHERE option_name = '変更前の接頭辞user_roles';
UPDATE 変更した接頭辞usermeta SET meta_key = '変更した接頭辞capabilities' WHERE meta_key = '変更前の接頭辞capabilities';
UPDATE 変更した接頭辞usermeta SET meta_key = '変更した接頭辞user_level' WHERE meta_key = '変更前の接頭辞user_level';

変更が完了したら管理画面にアクセスができるようになります。
“wp-config.php”ファイルの
“データベース名”・”データベースのユーザー名”・”データベースログインID”・”phpmyadminのホスト名(phpmyadminサーバー名)”・”接頭辞”
以上を書き換えてサーバーにアップすると移行が完了します。
(できない場合はテーマがなかったりするので、移行元で使用してたテーマをアップロードすること)

追記
サーバー移動後ログイン画面で「このページにアクセスするための十分なアクセス権がありません。」と出たらデータベースで「_option」を以下のコードで変更を加えること

UPDATE 変更したい接頭辞_options SET option_name = '変更したい接頭辞_user_roles' WHERE option_name = 'wp_user_roles';
UPDATE 変更したい接頭辞_usermeta SET meta_key = '変更したい接頭辞_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE 変更したい接頭辞_usermeta SET meta_key = '変更したい接頭辞_user_level' WHERE meta_key = 'wp_user_level';

関連記事:運営してるサイトのサーバー移動、DB移動、ドメイン変更について