WordPressインストール後にテーブル接頭辞を変更する

WordPressをデフォルトのテーブル接頭辞でインストールしてしまうと、セキュリティ面で脆弱性となりやすい。そこで、インストール後にテーブル接頭辞を変更する。

環境整理

作業前作業後
環境サーバーサーバー
ディレクトリサブディレクトリサブディレクトリ
サーバーレンタルサーバレンタルサーバ
MySQL管理ツールphpMyAdminphpMyAdmin
テーブル接頭辞wp_test_
URL置換Search-Replace-DB

手順

phpMyAdminへアクセスする

phpMyAdminへアクセスし、編集するデータベースを選択する。

wp_というテーブル接頭辞が付与されているこちらのデータベースを編集していく。

テーブル接頭辞を書き換える

編集したいテーブルをすべて選択し、チェックしたものを:のプルダウンの中から、テーブル名の接頭辞を付け替えるをクリックする。

Replace table prefix:の画面で、付け替え元付け替え先を入力し実行するをクリックする。

書き換えが成功した。

この段階でWordPressはデータベースとの接続情報を失い、Webサイトトップへアクセスすると、言語情報も失い、インストールウィザードへ促されてしまう。つまり、トップページにアクセスできず、管理画面にもログインできなくなる。

wp-config.phpを編集する

データベース情報を適正化するために、サーバからwp-config.phpをダウンロードして、データベース接続情報を入力し直す。

編集するのは、$table_prefix = 'wp_';の行。

編集前はこのようにwp_なので、


$table_prefix = 'wp_';

次のようにtest_へ変更し保存する。


$table_prefix = 'test_';

保存が完了したら、サーバーへ戻す。

管理画面へログインできるようにする

トップページは正常に表示されるようになるが、管理画面へログインできない。原因はデータベースにwp_の情報が残っていることである。

そこでもう一度phpMyAdminへアクセスし、該当のデータベースのテーブルを編集する。

まずは。test_optionsテーブルのおおよそ100行目にあるwp_user_rolestest_user_rolesへ書き換えて実行する。

次に、wp_usermetaテーブルを編集する。

Search this tablewpと入力すると、wpが含まれる行をソートしてくれる。

wp_となっている行をすべてtest_へ変更する。

メモ

wp_optioinsテーブルにはwp_が残っているが、とりあえずスルーした

管理画面へログインする

管理画面へログインできることを確認する。

うまくいかなかったときは

以上の手順の中で想定外のことが発生したときは、以下の解決策を試みる。

FTPでアップした画像をメディアに紐づける

FTPで画像をアップロードした時、画像がメディアに紐付けられないことがある。そういったときはプラグインMedia from FTPを使用して、画像をメディアに認識させると良い。

移行後のWordPressにログイン出来ない

URLの変更を伴うような移行を行った場合、WordPressの管理画面にログインできなくなることがある。そんなときはいくつかの方法を試してみる。

WP_SITEURLとWP_HOMEを定義する

wp-config.phpに以下を追記する。


define('WP_HOME', 'http://hishigata.xsrv.jp/low');
define('WP_SITEURL', 'http://hishigata.xsrv.jp/low');

上記をwp-config.phpに追記すると、ダッシュボード設定WordPress アドレス (URL)およびサイトアドレス (URL)がグレーアウトして編集無効になる。

RELOCATE 定数を追記する

wp-config.phpの上記WP_SITEURLとWP_HOMEの2行を削除し、


define( 'RELOCATE', true );

と追記し、http://XXXXXX.com/XXXXXX/wp-login.phpへアクセスする。作業完了後に必ず、追記した行を削除すること。

参考
  • サイト URL の変更
    https://ja.wordpress.org/support/article/changing-the-site-url/
  • 【WordPress】テーブルの接頭辞「wp_」を別のものに変更する方法
    https://blog.z0i.net/2020/12/wp-table-prefix.html