WordPressのデータベーステーブル接頭辞を変更するには、wp-config.php内の$table_prefixを編集し、すべてのデータベーステーブルを新しい接頭辞に変更し、wp_optionsとwp_usermeta内の接頭辞付きキーを更新します。プラグインによる方法は、ほとんどのサイトにとって最も速く安全です。phpMyAdminやAdminerでのSQLは、より大きなデータベースで完全な制御を可能にします。必ず最初にデータベースをバックアップしてください。
WordPressのデータベーステーブル接頭辞を変更することは、サイトのセキュリティを強化するシンプルかつ効果的な方法です。デフォルトでは、WordPressはテーブル接頭辞*wp_*を割り当てており、これがSQLインジェクション攻撃を試みるハッカーの一般的な標的になります。この接頭辞を変更することで、こうした脅威からデータベースを保護するのに役立ちます。
どの方法を使うべきか?
| 方法 | 必要なもの | リスクレベル | 最適な対象 |
|---|---|---|---|
| プラグイン | wp-adminへのアクセス、書き込み可能なwp-config.php |
低 | ほとんどのサイト、技術に詳しくないユーザー |
| phpMyAdminでのSQL | cPanel / phpMyAdminへのアクセス | 中 | phpMyAdminを提供するホスト |
| AdminerでのSQL | Adminer経由のデータベースアクセス | 中 | 単一ファイルのデータベース管理 |
3つの方法はすべて同じ3つのものを変更します——wp-config.phpの接頭辞、テーブル名、そしてwp_optionsとwp_usermeta内の接頭辞付きキーです。違うのは、それを行うために使うツールだけです。
WordPressサイトでのあらゆる動作は、データベースと相互に関連しています。

なぜWordPressのテーブル接頭辞を変更すべきなのか?
デフォルトのwp_テーブル接頭辞を変更することは、次のことに役立ちます。
- SQLインジェクション攻撃のリスクを軽減する
- 攻撃者がテーブル名を推測するのを難しくする
- WordPressサイトにセキュリティの層をもう1つ追加する
これは1回限りのセキュリティ強化ステップです。カスタム接頭辞だけでは執拗な攻撃者を止めることはできませんが、デフォルトのwp_という名前を前提とした自動化スクリプトを無効化します——そして、WordPressデータベースを狙うものの大半はこれらのスクリプトです。
始める前にデータベースをバックアップする
Changing the WordPress database prefix can be a critical task, and it’s not always easy. You must ensure you don’t break your website by changing the WordPress table prefix.
Before changing the database prefix, we recommend doing it on a staging site. So you can check thoroughly if the update works and can safely push your staging site to the production site without any risk of data loss after changing the DB prefix.A staging site is a copy of your live site, so you can do different changes/testing and make those changes live with a single click.
You can create a free staging site with WP STAGING.
WordPressをインストールする際、最も一般的なミスの1つは、データベースの接頭辞を変更し忘れることであり、これにより自動化されたSQLインジェクションへの扉が開いたままになります。予防措置を講じることは、ウェブサイトをハッキングから守るために非常に重要です。接頭辞の変更はすべてのテーブルに影響するため、ステップのどこかでうまくいかなかった場合、最新のバックアップが安全網になります——変更を行う前に、数分でWordPressサイトをバックアップして復元することができます。
WordPressのデータベース接頭辞はどうやって変更するのか?
このステップバイステップガイドに従って、WordPressのデータベース接頭辞を安全に変更しましょう。3つの選択肢があります。
- プラグインを使ってデータベーステーブル接頭辞を変更する。
- AdminerでSQLクエリを使って接頭辞を変更する。
- phpMyAdminでSQLクエリを使って接頭辞を変更する。
Contents
方法1:プラグインでテーブル接頭辞を変更する
プラグインは最も速くリスクの低い選択肢です。なぜなら、wp-config.phpを編集し、テーブルを変更し、接頭辞付きのオプションキーとusermetaキーを自動で更新してくれるからです。手順は次のとおりです。
- WordPressのダッシュボードに移動します。
- 「プラグイン」タブに移動し、「新規追加」をクリックします。
- WordPressプラグインリポジトリでBrozzme DB Prefix & Tools Add-onsを検索します。
- 「今すぐインストール」ボタンをクリックして、Brozzme DB Prefix & Tools Add-onをサイトにインストールします。
- 「有効化」ボタンをクリックして、このプラグインを有効化します。

プラグインが有効化され、すぐにWordPressのデータベース接頭辞の変更作業を始めることができます。
- ツールに移動し、DB Prefixをクリックします。データベースの現在の接頭辞を確認し、新しいものに変更できます。

wp-config.phpファイルが書き込み可能でない場合、プラグインはwp-config.phpファイル内のデータベース接頭辞を変更できないため、エラー通知が表示されます。ファイルのパーミッションを修正する(または方法2で示すようにwp-config.phpを手動で編集する)か、もう一度試してください。
「Change DB Prefix」ボタンをクリックすれば完了です。
方法2:AdminerでSQLを使って接頭辞を変更する
ステップ1:wp-config.phpでテーブル接頭辞を変更する
WordPressディレクトリのルートフォルダにあるwp-config.phpファイルでテーブル接頭辞の値を変更します。
wp-config.phpを編集するには、FileZillaまたは他のFTPクライアントを使って、FTPまたはSFTP経由でログインします。FTPの詳細はcPanelで確認できます(ホストによって異なります——cPanelの代わりにカスタマイズされたパネルを使うところもあります)。完全なリファレンスについては、wp-config.phpの編集に関するWordPressガイドを参照してください。
wp-config.phpファイル内でこの行を検索します。
$table_prefix = 'wp_testing123_';


接頭辞には数字、英字、アンダースコアのみを含めることができます。wp-config.phpでの変更が完了したら、保存します。
ステップ2:データベーステーブルの名前を変更する
Adminerを使っている場合は、左上隅にあるSQLコマンドボタンを見つけて選択します。

以下のSQLクエリは、既存のサイトでWordPressのテーブル接頭辞を変更します。SETプロパティを必要に応じて更新してください。
- データベース名
- oldprefix_
- newprefix_
それがこの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;クエリをカスタマイズすると、次のようなものになります。

そのクエリを実行します。次のように、2つ目のRENAME文のセットが生成されます。
RENAME oldprefix_options to newprefix_options;
RENAME oldprefix_users to newprefix_users;
これらの文をコピーして実行し、テーブルを新しい名前に変更します。(RENAME TABLEは標準的なMySQLです——MySQL RENAME TABLEリファレンスを参照してください。)

ステップ3:usermetaテーブルで接頭辞を変更する
テーブルの名前を変更した後、以下のクエリで*_usermetaと*_options内の接頭辞付きの値を置き換えます。ハイライトされた文字列の更新を忘れないでください。
*_usermetaテーブル内の値を置き換えるには、このクエリを使います。
UPDATE `newprefix_usermeta`
SET meta_key = REPLACE(meta_key, 'oldprefix_', 'newprefix_')
WHERE meta_key LIKE 'oldprefix_%';
ステップ4:wp_optionsテーブルで接頭辞を更新する
最後のステップは、*_optionsテーブル内の値を置き換えることです。このクエリを使います。
UPDATE wp_options SET option_name = replace(option_name, 'wp_', 'new_') WHERE option_name LIKE 'wp_%';
Adminerによる方法は以上です。
方法3:phpMyAdminでSQLを使って接頭辞を変更する
ステップ1: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での変更が完了したら、保存します。
ステップ2:データベーステーブルの名前を変更する
cPanelを使っている場合は、phpMyAdminを開きます。左側にデータベースが表示されます。cPanelを使っていない場合は、サイトのデータベースへのアクセスについてホストに問い合わせてください。phpMyAdminのドキュメントは、初めての方向けにアクセスとログインについて解説しています。
wp-config.phpで接頭辞を設定したデータベースを選択し、次の操作を行います。
- データベースを選択する。
- 「すべてチェックする」チェックボックスをオンにして、すべてのテーブルを選択する。
- ドロップダウンを開いて「テーブル接頭辞を置換」を選択する。

- 古い接頭辞を新しい接頭辞に置き換える。

新しい接頭辞を入力したら、「続行」をクリックして、すべてのテーブルの接頭辞を変更します。
ステップ3:optionsテーブルで接頭辞を変更する
このクエリを使って、optionsテーブル内のwp_接頭辞を検索します。
SELECT * FROM `wp_testing123_options` WHERE `option_name` LIKE '%wp_%'すべての古い接頭辞を新しい接頭辞に置き換えます。

ステップ4:usermetaテーブルで接頭辞を更新する
usermetaテーブル内の接頭辞としてwp_を検索し、このクエリを使って置き換えます。
SELECT * FROM `wp_testing123_usermeta` WHERE `meta_key` LIKE '%wp_%'
あるいは、1つのデータベースクエリでデータベース接頭辞を変更したい場合は、既存のWordPressサイトでこの1つのクエリを使うことができます。
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;このクエリは、すべてのテーブル接頭辞を新しいものに変更する2つ目のクエリを作成します。実行した後も、以下のクエリでwp_usermetaとwp_options内の接頭辞付きの値を置き換える必要があります。
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_%';以上です——これがデータベース接頭辞を変更する手動の方法です。
接頭辞を変更した後にwp-adminからロックアウトされた場合は?
これはWordPressのテーブル接頭辞を変更する際に最もよく起こる失敗です。WP STAGINGのサポートチケットでは、ほぼ常に、テーブル上では名前を変更したものの、データ内で見落とした接頭辞付きキーが1つあることに起因します。このチェックリストを順番に確認してください。
wp-config.phpを更新しましたか?$table_prefixの値は、新しいテーブル名と正確に一致している必要があります。ここでの不一致が、「Error establishing a database connection」やログインループの通常の原因です。wp_usermeta内のcapabilitiesキーを更新しましたか?wp_capabilitiesという行はnewprefix_capabilitiesに変更する必要があります。古い接頭辞のままだと、WordPressはあなたのロールを読み取れず、ロックアウトされます。wp_usermeta内のuser levelキーを更新しましたか? 同じ理由で、wp_user_levelをnewprefix_user_levelに変更してください。wp_options内のuser rolesキーを更新しましたか?wp_user_rolesをnewprefix_user_rolesに変更してください。WordPressはログイン時にここからロール定義を読み取ります。
確認すべきキー(テーブル別):
wp_optionsテーブル内:
wp_user_roles
wp_usermetaテーブル内:
wp_capabilitieswp_user_level
これらのキーをテーブルと同じ接頭辞を使うように変更すれば、再びログインできるようになります。それでもロックアウトされたままの場合は、最初に取得したバックアップを復元して、手順をやり直してください。
よくある質問
稼働中のサイトでWordPressのデータベース接頭辞を変更しても安全ですか?
最初にデータベースをバックアップし、接頭辞が現れるすべての場所——wp-config.php、テーブル名、wp_optionsとwp_usermeta内の接頭辞付きキー——を更新すれば安全です。プラグインによる方法はこれらすべてを自動的に処理するため、最もリスクの低い選択肢です。可能であれば、まずステージングコピーでテストしてください。
変更後に「Error establishing a database connection」が表示されるのはなぜですか?
wp-config.php内の$table_prefixが、テーブル名と一致しなくなっています。wp-config.phpを開き、末尾のアンダースコアを含めて、接頭辞が変更後のテーブルと正確に一致していることを確認してください。
既存のサイトで接頭辞を変更する必要がありますか、それともインストール時だけですか?
いつでも行うことができます。移行するデータがないため、インストール時に変更するのが最も簡単ですが、上記の3つの方法は既存のサイトでも機能します。
カスタム接頭辞はプラグインを壊す可能性がありますか?
プラグインがWordPressの設定された接頭辞を読み取る代わりにwp_をハードコードしている場合、その可能性があります。よく作られたプラグインはWordPressが報告する接頭辞を使うため、引き続き動作します。変更後は、主要なプラグインを一通りクリックして動作を確認してください。
まとめ
WordPressのテーブル接頭辞を変更することは、シンプルでありながら効果的なセキュリティ対策です。phpMyAdmin、プラグイン、SQLスクリプトのいずれを使う場合でも、変更を行う前に必ずデータベースをバックアップしてください。このちょっとした調整が、WordPressサイトの安全性を高めるのに大いに役立ちます。