2026年9月1日
2026年9月1日
WordPressのデータベースプレフィックス(prefix)を変更する方法
はじめに
デフォルトのwp_プレフィックスは攻撃者がSQLインジェクション攻撃でテーブル名を推測しやすくします。インストール後でもプレフィックスを変更できますが、全テーブルとusermeta・optionsテーブル内の参照も一緒に更新する必要があります。
症状・原因
- デフォルトの
wp_プレフィックスをセキュリティ上の理由で変更したい - サーバー移行時に別のプレフィックスに統一したい
- 複数のWordPressを同じDBに入れるためプレフィックスを変えたい
解決手順
ステップ1:変更前の準備
# 必ずバックアップを取得してから実施
wp db export before_prefix_change_$(date +%Y%m%d).sql
# 現在のプレフィックスとテーブル一覧を確認
wp db query "SHOW TABLES;"
# wp-config.php の現在のプレフィックスを確認
wp config get table_prefix
# → wp_
# サイトをメンテナンスモードにする
wp maintenance-mode activate
ステップ2:WP-CLI でプレフィックスを変更する(推奨)
# 新しいプレフィックスを決定(例: wp2025secure_)
NEW_PREFIX="wp2025secure_"
OLD_PREFIX="wp_"
# ① 全テーブルをリネーム
wp db query "SHOW TABLES LIKE '${OLD_PREFIX}%';" | tail -n +2 | while read table; do
new_table="${NEW_PREFIX}${table#$OLD_PREFIX}"
wp db query "RENAME TABLE \`$table\` TO \`$new_table\`;"
echo "Renamed: $table → $new_table"
done
# ② wp-config.php の table_prefix を更新
wp config set table_prefix "$NEW_PREFIX"
# ③ options テーブル内のプレフィックス参照を更新
wp db query "UPDATE ${NEW_PREFIX}options
SET option_name = REPLACE(option_name, '${OLD_PREFIX}', '${NEW_PREFIX}')
WHERE option_name LIKE '${OLD_PREFIX}%';"
# ④ usermeta テーブル内のプレフィックス参照を更新
wp db query "UPDATE ${NEW_PREFIX}usermeta
SET meta_key = REPLACE(meta_key, '${OLD_PREFIX}', '${NEW_PREFIX}')
WHERE meta_key LIKE '${OLD_PREFIX}%';"
ステップ3:phpMyAdmin で手動変更する
-- phpMyAdmin の SQL タブで実行
-- ① 全テーブルをリネーム(テーブル数分実行)
RENAME TABLE wp_posts TO wp2025secure_posts;
RENAME TABLE wp_postmeta TO wp2025secure_postmeta;
RENAME TABLE wp_options TO wp2025secure_options;
RENAME TABLE wp_users TO wp2025secure_users;
RENAME TABLE wp_usermeta TO wp2025secure_usermeta;
RENAME TABLE wp_comments TO wp2025secure_comments;
RENAME TABLE wp_commentmeta TO wp2025secure_commentmeta;
RENAME TABLE wp_terms TO wp2025secure_terms;
RENAME TABLE wp_term_taxonomy TO wp2025secure_term_taxonomy;
RENAME TABLE wp_term_relationships TO wp2025secure_term_relationships;
RENAME TABLE wp_links TO wp2025secure_links;
-- ② options テーブル内の参照を更新
UPDATE wp2025secure_options
SET option_name = REPLACE(option_name, 'wp_', 'wp2025secure_')
WHERE option_name LIKE 'wp_%';
-- ③ usermeta テーブル内の参照を更新
UPDATE wp2025secure_usermeta
SET meta_key = REPLACE(meta_key, 'wp_', 'wp2025secure_')
WHERE meta_key LIKE 'wp_%';
ステップ4:wp-config.php を更新する
// wp-config.php: table_prefix を新しい値に変更
// 変更前
$table_prefix = 'wp_';
// 変更後
$table_prefix = 'wp2025secure_';
// 変更後の確認
// WP-CLI: wp config get table_prefix
// → wp2025secure_
ステップ5:変更後の動作確認
# WordPress が正常に動作するか確認
wp core check-update
# 管理画面にアクセスできるか確認
wp option get siteurl
wp option get blogname
# テーブル一覧を確認(旧プレフィックスが残っていないか)
wp db query "SHOW TABLES;"
# メンテナンスモードを解除
wp maintenance-mode deactivate
# パーマリンクをリセット
wp rewrite flush --hard
# キャッシュをクリア
wp cache flush
注意事項
optionsテーブルとusermetaテーブル内にプレフィックスを含むキーが存在します。これらを更新しないとログインできなくなります- プラグインによっては独自のテーブルを作成している場合があります。
SHOW TABLESで旧プレフィックスのテーブルが残っていないか確認してください - マルチサイトの場合はサブサイトのテーブル(
wp_2_options等)もすべて変更が必要です
まとめ
DBプレフィックス変更は①wp db exportでバックアップ取得、②RENAME TABLEで全テーブルをリネーム、③UPDATE options SET option_name = REPLACE(...)でoptionsテーブルの参照を更新、④UPDATE usermeta SET meta_key = REPLACE(...)でusermetaの参照を更新、⑤wp config set table_prefixでwp-config.phpを更新・wp rewrite flushでキャッシュをリセットして動作確認します。