WordPress データベースのプレフィックスを変更するメモ

WordPress のデータベースにはデフォルトで「wp_」のプレフィックスが付いています。これを変更する簡単な方法。

テーブルプレフィックス

phpMyAdmin でWordPressのデータベースを確認するとテーブル名はすべて「wp_」で始まっています。wp_posts とか wp_options とか。WordPress のインストール時に特に別の文言を指定しない限り多分みんな wp_ です。今回は、これを変更する簡単な方法です。

プラグイン

プレフィックスを変更するプラグインがいくつかありましたが、どれもこれも現在まともに動作しません。ですので手動でやります。

かんたん

データベースを触ることに恐怖を感じるような、完全な初心者向けの投稿になっております。完全初心者でプレフィックスを変更したいやつなんかおらんやろ。と、思われましたか?います。例えば私です。

プレフィックスを変更したい理由

テーブル名のプレフィックスを変更したい理由についてはくどくど言いません。ある人は「wp_のままではセキュリティ上よくないから気休めでも変更するのだ」と言います。
ここの筆者は「昔、ひとつのデータベースに複数のWordPressをインストールしたときにプレフィックスで使い分けたけど、今はデータベースごとに納め直したから当時設定したプレフィックスがうざい」あるいは「FileMakerで複数のWordPressを管理しているのだが、サイトごとにデータファイルを切り替えて使うのでテーブル名を揃えておくことが使い回し的に必須」などと、ちょっと訳の分からないことを言います。

理由はどうあれ、すでに稼働中のWordPressのテーブルプレフィックスを変更します。MyAdminの画面を見るだけでもドキドキするレベルのデータベースド素人にもできる簡単な方法。

準備

バックアップ

バックアップしておきます。WordPress のバックアッププラグインを利用するもよし、MyAdmin でデータベースごと「エクスポート」するもよしです。

Xserver ではデータベースのバックアップを毎日取ってくれていますから、自分でバックアップしなくてもサーバーのバックアップから戻すことも出来ます。

メンテ表示とプラグイン停止

稼働中のWordPressをメンテモードにしてプラグインをなるべく全部無効にします。メンテモードのプラグイン使ってるならそれは残しますが。

プラグイン全停止は必須ではありませんが、なるべくそうしたほうがいいかなーという。プラグインの中にはデータベーステーブルを作成したりテーブル名を利用するタイプもありますから。なんとなく。念のため。事が済めば有効に戻します。

wp-config.php を開く

FTPアプリを利用するなどして、WordPress のディレクトリにアクセスできるようにしておきます。インストールしたWordPress のフォルダ直下に wp-config.php がありますから開きます。

wp-config
wp-config

wp-config にプレフィックスの記述があります。確認しておきましょう。

/**
* WordPress database table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';

$table_prefix = ‘wp_’; この wp_ を変更するわけです。

phpMyAdmin を開いておく

ブラウザで phpMyAdmin を開いておきます。開く方法が判らない場合は、各自サーバーの説明に従ってください。Xserver なら管理ダッシュボードから開くこともできます。

phpMyAdmin
phpMyAdminで目的データベースを選択

phpMyAdmin を開いて、目的データベースを選択しておきます。wp_ で始まるテーブル群を確認できますね。これらすべての名前を変更するわけです。

プレフィックスを変更する

wp-config.php の記述を変更

ここでは、現在のプレフィックスを wp_
新しく付けるプレフィックスを new_ ということにして話を続けます。

まずはFTPで開いた wp-config.php のプレフィックの記述の部分、現在の wp_ から new_ に変更します。

$table_prefix = 'new_';

ここで wp-config を保存しても良いでしょう。保存しても閉じずに、いつでもUndoできるよう開きっぱなしで良いかと思います。

変更して保存すると WordPress ではデータベーステーブルとの接続が切れてサイトは崩壊していると思います。今はサイトを確認などせず、次に進みます。

phpMyAdmin で作業

phpMyAdmin で作業します。

phpMyAdmin
phpMyAdminで目的データベースを選択

さて。プレフィックスを変更する方法ですが、多くの専門家たちが教えてくれるようなSQLにタタタっとコマンドを書き込むようなカッコいいことはしません。

もしデータベース内がすべて同じプレフィックスのテーブルなら、すべてチェックします。そうでないなら、変更したいプレフィックスのテーブルのみをチクチク選択します。

myAdminでテーブルを選択する

選んだら「チェックしたものを」を引き出します。・・・ふつうに選択肢にあります。「接頭辞を付け替える」が。

myAdmin テーブル名の接頭辞を付け替える
テーブル名の接頭辞を付け替える

もしこの選択肢がなければそこまでです。phpMyAdmin のバージョンか何かが違うのでしょう。すいません。その場合、この投稿のことを忘れてください。

「テーブル名の接頭辞を付け替える」を選んだら次の画面が出てくるので設定します。

プレフィックスの変更ダイアログ
付け替え元に現在のプレフィックス、付け替え先に新しいプレフィックスを記入します

ここでの例ではこんな感じ(もちろん実際には文字に色は付いていませんよ)

「続ける」で、現在の wp_ がすべて new_ に置き換わります。もう後戻りは出来ません。「本当に続けますか?」みたいな確認はありません。

見事、プレフィックスが置き換わりました。しかしまだやることが残っています。テーブル内に、以前のプレフィックスが使われている項目が残ってるんで、それを見つけ出して変更します。

追加の変更を手動で補う

テーブルの中身に、以前のプレフィックスのままの項目が残っています。項目というか、項目名、キーです。それは次の箇所です。

  • new_options テーブル「wp_user_roles」の option_name
  • new_usermeta テーブル「wp_capabilities」 の meta_key
  • new_usermeta テーブル「wp_user_level」の meta_key

プレフィックスが new_ になったのに、テーブル内に wp_ で始まるキーが残っています。これを new_ に変更しなければなりません

手動で辿り着くには、テーブル(options or usermeta)を選択し、項目名でソートして目視で探すか、上部のフィルタ欄に wp_ と入れて探します(フィルタ欄はちょっとクセがあって、表示行数を増やすかソート順の工夫をしないと発見できないかも)

さすがに上記三つを変更することが判りきっているので、賢そうなコードを使いますか?

phpMyAdmin の上方タブから「SQL」を選択し、

SQL にペーストして実行

事前に用意しておいたコードをペーストして「実行」します。

コードは以下です。

UPDATE new_options SET option_name = 'new_user_roles' WHERE option_name = 'wp_user_roles';
UPDATE new_usermeta SET meta_key = 'new_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE new_usermeta SET meta_key = 'new_user_level' WHERE meta_key = 'wp_user_level';

「new_○○ テーブルの option名またはmeta key から wp_●● を見つけて new_●● に変更せよ」と3個分やってます。

新しいプレフィックス new_ と旧プレフィックス wp_ の箇所を実際の文言に置き換えたものを事前に用意しておきましょう。

以上、完了しました。他に wp_ で始まる項目名や項目内容は残っていないと思います。もし残ってたら御免。念のためにテーブル内を検索しておきますか?

後処理

WordPress に戻って、停止したプラグインをすべて有効に戻し、メンテモードにしているなら解除しておきます。

キャッシュをすべてクリアし、プラグインの設定を改めて保存したり、パーマリンク設定を保存したり、「再保存」できるものがあればしておくと良いかもしれません。

最初は少しもたもたするかもしれませんが大きな弊害はないと思います。

筆者の例だと、一部の固定ページやカスタム投稿が 404 になったりして焦りましたが、どれかを編集して更新すると元に戻りました。放っておいても時間が経てば解決したかもしれませんがわかりません。

一応、めぼしいページをいくつか表示してみて、問題ないか確認しておきましょう。

もし滅茶苦茶のしっちゃかめっちゃかになったなら、諦めてバックアップからすべて戻しましょう。とりあえず wp-config.php のプレフィックスの部分を元に戻し、データベースを丸ごと復元します。

バックアップからの戻し方?あぁ、それも初心者殺しの難解さですねえ。ここでは詳しく触れませんが、該当データベース内を全部削除してバックアップファイルからインポートするのが確実です。全部削除?それ恐ろしくないですか? 恐ろしいですよ。

そうまでしてプレフィックスを変更したいのか?と、自問することもまた大切かもしれません。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください