WordPressをデフォルトのテーブル接頭辞でインストールしてしまうと、セキュリティ面で脆弱性となりやすい。そこで、インストール後にテーブル接頭辞を変更する。
コンテンツ
環境整理
| 作業前 | 作業後 | |
|---|---|---|
| 環境 | サーバー | サーバー |
| ディレクトリ | サブディレクトリ | サブディレクトリ |
| サーバー | レンタルサーバ | レンタルサーバ |
| MySQL管理ツール | phpMyAdmin | phpMyAdmin |
| テーブル接頭辞 | 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_rolesをtest_user_rolesへ書き換えて実行する。

次に、wp_usermetaテーブルを編集する。
Search this tableにwpと入力すると、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
