WordPress レンタルサーバ移動 引っ越し(6)

「WordPressでブログ」の運用レンタルサーバをInfinitoPlusからExpressWebへ移行中です。先回は「新データベースにデータをリストア」作業を実施して、新しい稼働先レンタルサーバExpressWebへ現在使用中のWordPressのデータベースのバックアップデータをphpMyAdminの機能を使いリストアしました。

今回は次の作業「新データベースのテーブル名(プレフィックス)を変更」を実施します。
これは1つのデータベースの中で複数のWordPressブログを稼働させるためにテーブル名が重ならないようにするためです。その他、テーブル名を変えることはセキュリティ面からも良いと言われているそうです。
テーブル名を変えると言ってもテーブル名をガラリと変えるわけではなくて、プレフィックスと呼ばれる部分だけ変更します。
元々のプレフィックスは「wp_」です。今回は「wp_****_」としました。****の部分はセキュリティ面から非公開とさせてください。
プレフィックスはwp_config.phpの中で指定してあります。ですから、例えばデータベース内のテーブル名が「wp_commentmeta」→「wp_****_commentmeta」と変えるような作業をします。またデータ中にそのテーブル名を持っているデータが有りますので、その情報のプレシックスも変更します。私もこの作業は初めてですが、難しい作業では有りませんので確実に一つ一つ進めていけば問題ないはずです。

  1. 現レンタルサーバからFTPで関係ファイルを全部ダウンロード
  2. 現データベースのデータのバックアップ
  3. 新データベースを作る
  4. 新データベースにデータをリストア
  5. 新データベースのテーブル名(プレフィックス)を変更
  6. wp_config.phpのプレフィックスとデータベース接続情報を変更
  7. 新レンタルサーバにFTPで全ファイルアップロード
  8. 稼働テスト
  9. DNSの切り替え

新データベースのテーブル名(プレフィックス)を変更

まずはプレフィックスを何という名前にするか決めます。私は適当にWP_の後ろに4文字の単語を追加する形にしましたが、わかり易い名前でそんなに長くなければ何でも良いと思います。それからwp_に拘らなくても良いそうです。

テーブル名(プレフィックス)を変更作業について

WordPressのデフォルト環境で使用しているテーブルはWordPress4.2.2では以下の11テーブルです。
・wp_commentmeta
・wp_comments
・wp_links
・wp_options
・wp_postmeta
・wp_posts
・wp_terms
・wp_term_relationships
・wp_term_taxonomy
・wp_usermeta
・wp_users
これら11個のテーブルに対し、リネームを行います。

ALTER TABLE wp_commentmeta RENAME TO wp_****_commentmeta;
ALTER TABLE wp_comments RENAME TO wp_****_comments;
ALTER TABLE wp_links RENAME TO wp_****_links;
ALTER TABLE wp_options RENAME TO wp_****_options;
ALTER TABLE wp_postmeta RENAME TO wp_****_postmeta;
ALTER TABLE wp_posts RENAME TO wp_****_posts;
ALTER TABLE wp_terms RENAME TO wp_****_terms;
ALTER TABLE wp_term_relationships RENAME TO wp_****_term_relationships;
ALTER TABLE wp_term_taxonomy RENAME TO wp_****_term_taxonomy;
ALTER TABLE wp_usermeta RENAME TO wp_****_usermeta;
ALTER TABLE wp_users RENAME TO wp_****_users;

また、wp_optionsテーブルのoption_nameのデータに「wp_user_roles」テーブル名情報が格納されているので、これも「wp_****_user_roles」と更新します。
その他には、wp_usermetaテーブルのmeta_keyのデータの中にもテーブル名情報が含まれていますので更新します。

UPDATE wp_****_options SET option_name = 'wp_****_user_roles' WHERE option_name = 'wp_user_roles';
UPDATE wp_****_usermeta SET meta_key = 'wp_****_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE wp_****_usermeta SET meta_key = 'wp_****_user_level' WHERE meta_key = 'wp_user_level';

テーブル名を更新する

プレフィックスを決めたら先回と同様に、phpMyAdminを立ち上げ新しく作成したデータベースへ接続します。
私の環境ではExpressWebの管理画面からMySQLを操作するphpMyAdminを立ち上げます。
wordpress07
①データベースをクリック
新しく作成したデータベースをクリックします。
②SQLタグをクリック
SQLタグをクリックしてSQLを実行できるようにします。
③SQL文を張り付ける
上のテーブル名を更新するSQLのプレフィックス名を変更したものをコピーして貼り付けます。
④実行する
「実行する」ボタンをクリックしテーブル名変更を実行します。

SQL実行結果
①成功メッセージを確認する
「SQLは正常に実行されました」とメッセージが出ているか確認する。もし、失敗していたら、SQLを正しく修正して失敗したテーブル以降を分を再度実行する。
②テーブル名が正常に更新されたことを確認する
プレフィックスが正常に反映されているか確認する。

テーブル名情報を更新する

次にテーブル名が既に格納されている情報(データ)を更新する。WordPress4.2.2のデフォルトのままだと上に挙げた3か所が該当するので更新を来ないます。
尚、ググってみるとwp_dashboard_quick_press_last_post_id、wp_user-settings、wp_user-settings-timeについても更新するの対象かのように書かれた情報も有ったが、変更しなくてOKそうである。今のところ不具合は出ていない。もし、なにかしら不具合が出たら別途報告します。
wordpress09
①データベース名をクリックする
②SQLタグをクリックする
③Update文を張り付ける
上のテーブル名データを更新するupdate文のプレフィックスを変更したテーブル名に変更後張り付けます。
④実行する

UPDATE変更結果
①成功メッセージを確認する
「SQLは正常に実行されました」とメッセージが出ているか確認する。もし、失敗していたら、SQLを正しく修正して失敗した更新以降を分を再度実行する。

 以上でテーブル名(プレフィックス)の変更が実施できました。SQL文を実行するなど初めての人は少し難しかったところも有ると思いますが、確実に一つ一つこなすことで先に進めたと思います。
次は、wp_config.phpのプレフィックスとデータベース接続情報を変更する作業に進みます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です