【WP】のデータベース 接頭辞を変更する方法 Acunetix WP Security

XserverのX10プランはMySQLデータベースを30個しか(十分ですが、)作れないのでテストと節約のためにWordpressのテーブルの接頭辞を変えて複数のWPのサイトのテーブルを1個のMySQLデータベースに入れようとしたところはまったのでメモしておきます。

接頭辞とは?

名前の前に付くワードです。MySQLデータベースにある各テーブルの先頭についている名前です。

WordPressではデフォルトで先頭に「wp_」がつきます。(Wordpressインストール時に接頭辞を変更してあれば変わります。)

WordPressのMySQLデータベースのテーブル例

wp_blc_filters

wp_blc_instances

wp_blc_links

など、先頭に「wp_」がつきます。

これを

new_blc_filters

new_blc_instances

new_blc_links

に変更していきます。

なぜ変更が必要かというと1つのデータベースに

new_blc_filters
new_blc_instances
new_blc_links

wp_blc_filters
wp_blc_instances
wp_blc_links

を入れたいからです。同じテーブル名を2つ入れられないので新しく入れるテーブル名の接頭辞を変更していきます。

手動でテーブルを変更してみた(失敗した方法)

手動でも接頭辞を変えるだけだからうまくいくんじゃないかと思ってやってみたが意外とうまくいかなかった。

まずは、wp-config.phpファイルの接頭辞の部分を変更します。

$table_prefix = ‘wp_’;

$table_prefix = ‘new_’;
などに変更した場合は、テーブルの部分だけ変更すると

ScreenClip

http://ドメイン/wp-adminにアクセスすると、

「このページにアクセスするための十分なアクセス権がありません。」と表示されてします。

searchreplacedb2.phpでテーブル内の接頭辞を変えてみる

searchreplacedb2.php【WP】1つのドメインに複数サイトを構築手順+ハマったところで説明してあります)で「wp_」を「new_」に変更したらアドミンページにログインできたけどなぜかサイトの画像が表示されなくなった(T_T)

手動で接頭辞を置換で変えてみる

ようはテーブル名の接頭辞だけ変えてみればいいんだろうと思い秀丸の置換でやってみた。
`wp_ を `new_ に変更

ScreenClip

MySQLテーブル名だけ変更してもアドミンに入れずダメだった。

テーブル名だけじゃ無理だったのでテーブル内のデータを変更してみる。
wp_ を new_ この置換やると余計な部分まで変更されちゃうのでもっとおかしくなった・・・(;O;)

文字化けでユーザーのアクセス権が変わった?

もしかしたらMySQLをダンプしたとき文字化けでユーザーのアクセス権が変わったのかもとwp_user_rolesあたりを見てみても正常だった。
ScreenClip

Acunetix WP Securityを使って接頭辞を変えてみる

ちょっと手動じゃ解決できなさそうなので探してみると、Acunetix WP Securityというセキュリテイのプラグインで接頭辞を変えられるというので変えてみました。

接頭辞はデフォルトのwp_ではなく変えたほうがセキュリテイ的に安全度が増すようですのでコレを機に全部のワードプレスの接頭辞を変えてみます。(何十個もあるのでちょっと1日じゃできませんが・・・)

WordPressの プラグイン>新規追加 で「Acunetix WP Security」を入力します。

ScreenClip

インストールしてみます。

ScreenClip

プラグインを有効化します。

ScreenClip

ありがたいことにここに日本語化するファイルがありますが・・・Wordpressの最新バージョンにすると不具合あるらしいです。

ワードプレスのプラグインAcunetix WP Securityの日本語化ファイルの配布

仕方がないので英語のままやってみます。

ScreenClip

有効化されたので左マニューに「WP Security」が表示されますのでまずはダッシュボードをみてみます。

ScreenClip

セキュリテイ的に甘い部分のCriticalを選ぶと7項目ほどでてきます。かなりセキュリテイ甘いです(^_^;)

とりあえず今回は一番上の接頭辞を変えてみます。

Databaseを選んで、

ScreenClip

接頭辞変更画面になります。

ScreenClip

ここで黄色く警告がでます。

  1. wp-config.phpのパーミッションを666に変更すること、作業が終わったら元に戻す。
  2. 人がデータベースにアクセスしないような状態で作業しましょう。ということだと思う。

FTPソフトでwp-config.phpのパーミッションを変更しましょう。

ScreenClip

普段はWinSCPを使ってるので簡単にSSHで接続してファイルを編集できます。

グループ(Group)と他人(Other)を書き込めるように変更します。

ScreenClip

パーミッションを変更したら、Change the current:wp_ を new_ に変更して「Start Renaming」ボタンを押します。

上記のように緑の文字でチェックが2つついたら成功です。

下記のような場合は失敗です。

ScreenClip

wp-config.phpのパーミッションが適切に変更されていないのかもしれません。

もう一度チェックしてみましょう。

作業が終わったら必ずパーミッションを元に戻しましょう。

wp-conofig.phpを他の人に変更されるとサイトがおかしくなるので必ず戻してください!

ScreenClip

接頭辞を変更したデータベースをダンプしてダウンロード。

新しいサーバーにphpMyAdminのインポートからデータベースを入れてみます。

今回は、他のWordpressサイトのテーブルと同居するために接頭辞を変更しましたので、該当のMySQLデータベースにphpMyAdminでログインしてインポートします。

ScreenClip

無事インポートできました!

WordPressサイトのほうも正常に動いているかチェックしたところ、Adminページもサイト表示も正常でした!

これからすべてのWordpressのデータベースの接頭辞を変更してみます。