2026年9月1日

2026年9月1日

WordPressのデータベースプレフィックス(prefix)を変更する方法

はじめに

デフォルトのwp_プレフィックスは攻撃者がSQLインジェクション攻撃でテーブル名を推測しやすくします。インストール後でもプレフィックスを変更できますが、全テーブルとusermetaoptionsテーブル内の参照も一緒に更新する必要があります。

症状・原因

  • デフォルトの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でキャッシュをリセットして動作確認します。

お気軽にご相談ください

お見積りへ お問い合わせへ