プレフィックス(prefix)とは、日本語に訳すと「接頭辞」という意味で、文字列データなどで、先頭の領域に特別な意味がある場合に用います。
例えば、身近な例だと「電話の市外局番」はプレフィックスです(上図)
今回は、Wordpressで利用しているデータベースのテーブルの「プレフィックス(prefix)」について、プレフィックスを変更する必要性と、変更手順について解説していきます。
「Wordpressテーブルとプレフィックス」
以下、目次になります。
- WordPressテーブルの、プレフィックス(prefix)を変更する必要性について
- WordPressのプラグインを使って変更する方法について
- 手動で、Wordpressのテーブルプレフィックス(prefix)を変更する3つの手順
WordPressテーブルの、プレフィックス(prefix)を変更する必要性について
WordPressテーブルのプレフィックス(prefix)を変更する必要性は、大きく2点あります(下記)
- セキュリティ対策
- WordPressを複数インストールする場合
では、順に解説していきます。
セキュリティ対策
WordPressをインストール後、デフォルトのままだと、全てのテーブルには「wp_」というプレフィックスが設定されています。
ですが、このままだと「テーブル名」が特定されてしまうので、データベースに対してのハッキングが容易になってしまいます(例えば、SQLインジェクションで、不正にテーブルが削除・変更されてしまう)
なので、「テーブル名」を特定されにくくするために、プレフィックスをオリジナルに設定する必要があります。
WordPressを複数インストールする場合
上述している通り、デフォルトのままだと、全てのテーブルには「wp_」というプレフィックスが設定されているので、Wordpressを複数、同じデータベースに設定しようとすると、衝突がおきてしまいます。
なので、同じデータベースに、2つ以上のWordpressをインストールしたい場合は、プレフィックスを変更する事が必須条件になります。
以上、2点の理由において、Wordpressのテーブルプレフィックスを変更する必要があります。
次は、プラグインを使って変更する方法についてです。
プラグインを使って変更する方法について
WordPressのテーブルプレフィックスを変更してくれるプラグインは、下記2つが一般的に使われています。
- 「WP Security Scan」
- 「Change DB Prefix」
上記のプラグインを利用すれば、簡単にプレフィックスの変更が行えますが、個人的には推奨はしません。
なぜなら、プラグインを利用することにより、その分メモリ領域を使用するので、サイトの動作が遅くなってしまう懸念があります。また、プラグイン自体に脆弱性が存在する可能性もあります。
なので、プラグインは利用せずに、なるべく手動でプレフィックスの変更をすることをオススメいたします。
手動は、難しいよ、、、と思っている方は、大丈夫です。
今回これから、手動での変更手順を一から解説していきますので。
手動で、Wordpressのテーブルプレフィックス(prefix)を変更する手順
変更手順を、以降3つのステップに分けて、解説していきます(下記)
- 「wp-config.php」で設定している、テーブルプレフィックス(prefix)を変更する
- WordPressで利用している、全てのテーブルのプレフィックス(prefix)を変更する
- 「options」テーブルと「usermeta」テーブル内の項目を変更する
「wp-config.php」で設定している、テーブルプレフィックス(prefix)を変更する
WordPressのファイル群で、テーブルプレフィックスを指定しているファイルが「wp-config.php」です。
このファイルを開いて、下記赤文字部分をオリジナルな値に変更してください。
ここで設定した値を使用して、次は、データベースのテーブル名(プレフィックス)を変更していきます。
WordPressで利用している、全てのテーブルのプレフィックス(prefix)を変更する
まず、テーブル名(プレフィクッス)を変更するために、「phpMyAdmin」を利用しましょう。
「phpMyAdmin」を開いたら、Wordpressのテーブルが設定されているデータベース上で、下記クエリを実行してください。
※下記では、プレフィックスを「wp_」から「wp_original_」に変更しています。「wp_original_」の部分は、オリジナルの文字列にしてください。
ALTER TABLE wp_comments RENAME TO wp_original_comments;
ALTER TABLE wp_links RENAME TO wp_original_links;
ALTER TABLE wp_options RENAME TO wp_original_options;
ALTER TABLE wp_postmeta RENAME TO wp_original_postmeta;
ALTER TABLE wp_posts RENAME TO wp_original_posts;
ALTER TABLE wp_terms RENAME TO wp_original_terms;
ALTER TABLE wp_term_relationships RENAME TO wp_original_term_relationships;
ALTER TABLE wp_term_taxonomy RENAME TO wp_original_term_taxonomy;
ALTER TABLE wp_usermeta RENAME TO wp_original_usermeta;
ALTER TABLE wp_users RENAME TO wp_original_users;
【phpMyAdmin:画面例】
これで、Wordpress標準で設定されているテーブルは全てプレフィックスを変更しました。
ですが、注意しなければならないのが、「プラグイン」で使用しているテーブルもプレフィックス変更しなければならない。ということです。
例えば、下図だと「Wordpress Popular Posts」と「Wordbooker」というプラグインで独自テーブルが使用されています。
こちらも、先ほど同様にテーブル名(プレフィックス)を変更しておきましょう。
「options」テーブルと「usermeta」テーブル内の項目を変更する
先ほど、Wordpressで利用している全テーブルのプレフィックスを変更しましたが、このままだと、まだ不十分です。
試しに、Wordpressの管理画面を開いてみましょう。
すると、下図のように「アクセス権限がありません」と怒られてしまいます、、、
これは、まだやらなければならない作業があるからです。
実は、「wp_」というプレフィックスが使用されているのは、テーブル名だけでなく、データの名前にも使用されているのです。
どこのデータかというと、「options」テーブルと「usermeta」テーブル内にあるデータです。
まず、「options」テーブル内から、下記クエリで、該当データを検索しましょう。
そして、検索結果の「option_name」列から「wp_」で始まるデータを探して、そのデータを「wp_original_(例)」から始まるように、変更します。
次に「usermeta」テーブル内から、下記クエリで、該当データを検索します。
そして、検索結果の「meta_key」列から「wp_」で始まるデータを探して、そのデータを「wp_original_(例)」から始まるように、変更します。
以上で、完了です。
これで管理画面も正常に開けます(下図)
まとめ
上述していますが、テーブルプレフィックスを変更する理由の一つに、「セキュリティ対策」があります。
WordPressは、オープンソースで全世界に公開され、CMSの中で最も有名で、広く使われています。
だからこそ、Wordpressはハッカーの標的になりやすいです(オープンソースなので脆弱性が特定されやすい)
なので、Wordpressを利用する場合は、その点を考慮して、セキュリティ対策をしておく必要があります。
WordPressのセキュリティ対策については、コチラの方で必要な項目をまとめていますので、ぜひ見ておいて下さい→WordPressのセキュリティ対策でしておくべき11の項目