WordPressデータベース接頭辞の変更:3つの簡単な方法

WordPressデータベースのテーブル接頭辞を変更することは、サイトのセキュリティを高めるためのシンプルかつ効果的な方法です。デフォルトでは、WordPressはテーブル接頭辞として*wp_*を割り当てており、これがSQLインジェクション攻撃を狙うハッカーの一般的な標的となっています。この接頭辞を変更することで、こうした脅威からデータベースを守ることができます。

このガイドでは、WordPressデータベースのテーブル接頭辞を安全に変更する3つの異なる方法について解説します。

WordPressサイトでのあらゆる操作はデータベースと密接に結びついています。

WordPressにおけるデータベースの仕組み。
This image demonstrates how Databases work in WordPress.

なぜWordPressのテーブル接頭辞を変更するのか?

デフォルトのwp_テーブル接頭辞を変更することには、次のような利点があります:

  • SQLインジェクション攻撃のリスクを減らす
  • 攻撃者がテーブル名を推測しにくくする
  • WordPressサイトに追加のセキュリティ層を加える

始める前に:データベースをバックアップする

変更を加える前に、phpMyAdmin、WP Stagingのようなプラグイン、またはコマンドラインツールを使って、WordPressデータベースの完全バックアップを作成してください。

WordPressデータベース接頭辞の変更は重要な作業であり、必ずしも簡単とは限りません。WordPressテーブル接頭辞を変更する際に、サイトを壊さないように注意する必要があります。

データベース接頭辞を変更する前に、ステージングサイトで作業することを推奨します。そうすれば、更新がうまくいくかを十分に確認し、DB接頭辞を変更した後にデータ損失のリスクなく安全にステージングサイトを本番サイトにプッシュすることができます。

ステージングサイトはライブサイトのコピーなので、さまざまな変更やテストを行い、ワンクリックでそれらの変更を本番に反映できます。

WP STAGINGを使えば、無料でステージングサイトを作成できます。

WordPressのインストール時に最もよくある間違いの一つは、WordPressデータベースの接頭辞の変更を忘れることで、結果として攻撃者が自動化されたSQLインジェクションを実行できる状態になってしまいます。そのため、サイトをハッキングから守るためには予防策を講じることが極めて重要です。

WordPressデータベースの接頭辞を変更する方法

WordPressデータベースの接頭辞を安全にリネームするには、次のステップバイステップガイドに従ってください。

WordPressサイトのデータベース接頭辞を変更・リネームするには、3つの方法があります:

  1. プラグインを使ってデータベースのテーブル接頭辞を変更する。
  2. AdminerでデータベースクエリーによりWordPressデータベース接頭辞をリネームする。
  3. PhpMyAdminでデータベースクエリーによりWordPressデータベース接頭辞をリネームする。

方法1:プラグインを使ってデータベースのテーブル接頭辞を変更する

まず、プラグインのインストールによって生じる不具合を避けるため、サイトのバックアップを取ることをお勧めします(WP STAGING | PROのバックアップ機能を使う、またはCPanel経由で手動で行うのいずれかの方法)。

プラグインを使ってデータベース接頭辞を変更できます。WordPressで実行するための簡単な手順は以下のとおりです。

  1. WordPressダッシュボードにアクセスします。
  2. 「プラグイン」タブに移動し、「新規追加」をクリックします。
  3. WordPressプラグインリポジトリでBrozzme DB Prefix & Tools Add-onsを検索します。
  4. 「今すぐインストール」ボタンをクリックして、サイトにBrozzme DB Prefix & Tools Add-onをインストールします。
  5. 「有効化」ボタンをクリックして、このプラグインを有効化します。
プラグインによるWordPressデータベース接頭辞の更新

プラグインが有効化されたので、すぐにWordPressデータベース接頭辞の変更に取りかかれます。

  1. 「ツール」に移動して「DB Prefix」をクリックします。データベースの現在の接頭辞が表示され、新しいものに変更できます。
WordPressデータベース接頭辞

wp-config.phpファイルが書き込み可能でない場合、このプラグインはwp-config.phpファイル内のデータベース接頭辞を変更できないため、エラー通知が表示されます。

「Change DB Prefix」ボタンをクリックすれば完了です。

方法2:Adminerを使ってデータベースSQLクエリーでWordPressデータベース接頭辞をリネームする

wp-config.php設定ファイルでテーブル接頭辞を変更する

WordPressディレクトリのルートフォルダーにあるwp-config.phpファイル内のテーブル接頭辞の値を変更します。

wp-config.phpファイルを編集するには、Filezillaやその他のFTPクライアントを使ってFTPまたはSFTPでログインできます。FTPの詳細はcPanelで確認できます(ホスティングによっては、cPanelを持たず独自にカスタマイズされたパネルを使用している場合もあります)。

wp-config.phpファイル内のこの行を探します:

$table_prefix = 'wp_testing123_';

 
この画像は、wp-config.phpファイル内でテーブル接頭辞がどこにあるかを示しています。
It should look like this in the wp-config file:
この画像は、更新後の行がどのように見えるかを示しています。
That is what the updated line should look like.

接頭辞には数字、英字、アンダースコアのみ使用できます。wp-config.phpファイルを変更したら、保存してください。

データベースのテーブルをリネームする

Adminerを使用している場合、左上の角にSQLコマンドボタンがあります。そのボタンを選択してください。

この画像は、AdminerでSQLコマンドボタンの場所を示すスクリーンショットです
Where to find the SQL command button

以下のSQLクエリーは、既存のWordPressサイトのデータベースのWordPressテーブル接頭辞を変更するために使用できます。

SETプロパティを必要に応じて更新してください:

  • データベース名
  • oldprefix_
  • newprefix_

これがそのSQLクエリーです:

sql
SET @database  = "<strong>databasename</strong>";
SET @oldprefix = "<strong>oldprefix_</strong>";
SET @newprefix = "<strong>newprefix_</strong>";
 
SELECT
    concat(
        "RENAME TABLE ",
        TABLE_NAME,
        " TO ",
        replace(TABLE_NAME, @oldprefix, @newprefix),
        ';'
    ) AS "SQL" FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;

クエリーをカスタマイズすると、次のような結果が得られます:

WordPressデータベース接頭辞を更新するSQLクエリー
Use this SQL query to update the WordPress database Prefix

そのクエリーを実行すると、結果として次のような追加のクエリーが得られます:

RENAME oldprefix_options to newprefix_options;
RENAME oldprefix_users to newprefix_users;

これらのクエリーをコピーし、もう一度実行して、新しいテーブル名にリネームしてください。

このSQLクエリーを使ってWordPressデータベースのテーブルをリネームしてください
Use this SQL query to rename WordPress database tables

usermetaテーブルの接頭辞をリネームする

テーブルをリネームした後、以下のクエリーを使って*_usermetaおよび*_optionsテーブル内のいくつかの値も置換する必要があります。

ハイライトされた文字列の更新を忘れないでください。

*_usermetaテーブル内の値を置換するには、このクエリーを使用してください:

SQL
UPDATE `newprefix_usermeta`
SET meta_key = REPLACE(meta_key, 'oldprefix_', 'newprefix_')
WHERE meta_key LIKE 'oldprefix_%';
このSQLクエリーを使ってwp_usermetaテーブルのテーブル接頭辞をリネームしてください
Use this SQL query to rename the prefix in table wp_usermeta

wp_optionsテーブルの接頭辞を更新する

最後のステップは、*_optionsテーブル内の値を置換することです。

このクエリーを使用してください:

SQL
UPDATE wp_options SET option_name = replace(option_name, 'wp_', 'new_') WHERE option_name LIKE 'wp_%';
この画像は、optionsテーブル内の値を置換するためのSQLクエリーを示しています
Execute this query to replace the values in the options table.

以上です。

方法3:PHPmyAdminを使ってデータベースSQLクエリーでWordPressデータベース接頭辞をリネームする

wp-config.phpでテーブル接頭辞を変更する。

WordPressディレクトリのルートフォルダーにあるwp-config.phpファイル内のテーブル接頭辞を変更します。

wp-config.phpファイルを編集するには、Filezillaやその他のFTPクライアントを使ってFTPまたはSFTPでログインできます。FTPの詳細はcPanelで確認できます(ホスティングによっては、cPanelを持たず独自にカスタマイズされたパネルを使用している場合もあります)。

wp-config.phpファイル内のこの行を確認してください

$table_prefix = 'wp_testing123_';

接頭辞には数字、英字、アンダースコアのみ使用できます。wp-config.phpファイルを変更したら、保存してください。

データベースのテーブルをリネームする

cPanelを使用してPhpMyAdminにアクセスしていると仮定します。左側にデータベースが表示されます。cPanelを使用していない場合は、ホスティング会社に連絡してサイトのデータベースにアクセスしてください。

wp-config.phpファイルで指定したテーブル接頭辞を変更したいデータベースを選択し、以下の手順を実行してください。

  1. データベースを選択する。
  2. 「すべてチェック」チェックボックスをオンにして、すべてのテーブルを選択する。
  3. ドロップダウンをクリックして「テーブル接頭辞を置換」を選択する。
WordPressテーブル接頭辞を変更する
  1. 古い接頭辞を新しい接頭辞に置き換える。
WordPressデータベース接頭辞を更新する

新しい接頭辞を入力した後、「続行」をクリックすると、データベース内の接頭辞が変更されます。

Optionsテーブルの接頭辞をリネームする

このクエリーを使ってoptionsテーブル内のwp_接頭辞を検索します。

SQL
SELECT * FROM `wp_testing123_options` WHERE `option_name` LIKE '%wp_%'

古い接頭辞をすべて新しい接頭辞に置き換えます。

SQLクエリーを使って古いテーブル接頭辞を新しい接頭辞に置き換えます。

Usermetaテーブルの接頭辞を更新する

usermetaテーブルでwp_を接頭辞として検索し、このクエリーで置き換える必要があります。

SQL
SELECT * FROM `wp_testing123_usermeta` WHERE `meta_key` LIKE '%wp_%'
WordPressサイトのデータベース接頭辞

別の選択肢として、データベースクエリーを使ってデータベース接頭辞を変更したい場合、この単一のクエリーで実現できます。

既存のWordPressサイトのデータベースのWordPressテーブル接頭辞を変更したい場合は、次のSQLクエリーを使用できます:

SQL
SET @database = "database_name";
SET @old_prefix = "old_prefix_";
SET @new_prefix = "new_prefix_";

SELECT concat "RENAME TABLE ", TABLE_NAME, " TO", replace(TABLE_NAME, @old_prefix, @new_prefix),';') AS "SQL" FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;

このクエリーは、すべてのテーブル接頭辞を新しいものにリネームするために使える別のSQLクエリーを生成します。

その後、以下のクエリーを使ってwp_usermetaおよびwp_optionsテーブル内のいくつかの値も置換する必要があります。

SQL
UPDATE `wp_testing123_usermeta`
SET meta_key = REPLACE(meta_key, 'wp_', 'new_')
WHERE meta_key LIKE 'wp_%';

UPDATE wp_options SET option_name = replace(option_name, 'wp_', 'new_') WHERE option_name LIKE 'wp_%';

以上です。

これがデータベース接頭辞を変更する手動の方法です。

テーブル接頭辞のリネーム後にWordPress管理ダッシュボードにログインできない

これは、ユーザーがWordPressテーブル接頭辞をリネームする際に最もよく遭遇するエラーです。
これらすべてのカラム名の接頭辞を更新し、見落としがないことを確認してください:

wp_optionテーブル内

  • wp_user_roles

wp_user_metaテーブル内

  • wp_capabilities
  • wp_user_level

これらのカラムの接頭辞をテーブル名と同じ接頭辞にリネームすると、再びWordPressサイトにログインできるようになります。

まとめ

WordPressテーブル接頭辞の変更は、シンプルでありながら効果的なセキュリティ対策です。phpMyAdmin、プラグイン、SQLスクリプトのいずれを使う場合でも、変更を加える前に必ずデータベースのバックアップを取りましょう。この小さな調整が、WordPressサイトの安全性を大きく高めることにつながります!

関連記事

Rene Hermenau

著者: Rene Hermenau

著者について: René Hermenau は WP STAGING の創設者です。WordPress のバックアップ、ステージング、移行、データベース処理、安全なデプロイメントワークフローに取り組んでいます。