この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:guest
更新日時:2026-06-11 07:10:02

タイトル: DB設定
SEOタイトル: WordPress DB 設定完全ガイド (wp-config.php)

この記事の要点
  • WordPress の DB 設定は wp-config.php に集約
  • 必須 4 つ: DB_NAME / DB_USER / DB_PASSWORD / DB_HOST
  • 推奨: DB_CHARSET = utf8mb4 + DB_COLLATE = utf8mb4_unicode_ci
  • $table_prefix はインストール後の変更が極めて困難。最初に決める
  • SSL 接続は MYSQL_CLIENT_FLAGS 定数、SSL CA 指定は MYSQL_SSL_CA

wp-config.php の DB 設定

WordPress の DB 接続情報はすべて wp-config.php に書きます。WordPress 本体のディレクトリ直下にあります:

<?php
/** wp-config.php の DB 設定部分 */

// データベース名
define('DB_NAME', 'wordpress_db');

// ユーザー
define('DB_USER', 'wp_user');

// パスワード
define('DB_PASSWORD', 'StrongPassword123!');

// ホスト名
// ローカル: localhost / 127.0.0.1
// ソケット: localhost:/var/run/mysqld/mysqld.sock
// リモート: db.example.com:3306
define('DB_HOST', 'localhost');

// 文字コード(utf8mb4 を強く推奨。絵文字に対応)
define('DB_CHARSET', 'utf8mb4');

// 照合順序
define('DB_COLLATE', 'utf8mb4_unicode_ci');

// テーブルプレフィックス
$table_prefix = 'wp_';

必須項目の解説

定数役割
DB_NAMEWordPress 用 DB の名前wordpress
DB_USERDB に接続するユーザーwp_user
DB_PASSWORDそのユーザーのパスワード...
DB_HOSTDB サーバーのホスト名localhost / db:3306
DB_CHARSET文字コードutf8mb4(推奨)
DB_COLLATE照合順序utf8mb4_unicode_ci or utf8mb4_0900_ai_ci
$table_prefixテーブル接頭辞wp_ 既定、変更可

$table_prefix の注意

テーブル接頭辞は1 つの DB に複数の WordPress を同居させる場合や、推測されにくい接頭辞でセキュリティを上げたい場合に変更します:

// 例: 推測しにくいランダム文字列
$table_prefix = 'wp_zk7x_';

// 例: 複数 WP 同居
// サイト A
$table_prefix = 'sitea_';
// サイト B
$table_prefix = 'siteb_';

★ インストール後の変更は危険。テーブル名以外にもオプションテーブルやメタテーブル内に {prefix}user_roles のような名前が埋め込まれているため、新規構築時に決めるのが鉄則です。

DB_HOST の特殊な書き方

// 標準: ホスト名
define('DB_HOST', 'localhost');

// ポート指定
define('DB_HOST', 'db.example.com:3306');

// ソケット指定
define('DB_HOST', 'localhost:/var/run/mysqld/mysqld.sock');

// IPv6
define('DB_HOST', '[2001:db8::1]:3306');

// Docker compose のサービス名
define('DB_HOST', 'mysql:3306');     // docker-compose.yml のサービス名
define('DB_HOST', 'db');             // ポート省略

SSL / TLS 接続

// SSL を要求(証明書検証なし)
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);

// SSL CA 証明書を指定(検証あり)
define('MYSQL_SSL_CA', '/etc/ssl/certs/ca-certificates.crt');

// クライアント証明書 (mTLS)
define('MYSQL_SSL_KEY',  '/etc/ssl/private/client-key.pem');
define('MYSQL_SSL_CERT', '/etc/ssl/certs/client-cert.pem');

// 検証強度(PHP 8.0+ 推奨)
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
// 古い PHP では証明書検証無しでも接続可能 → 注意

Amazon RDS / Google Cloud SQL / Azure Database for MySQL では SSL 接続が推奨です。MYSQL_SSL_CA に CA バンドルファイルを指定してください。

DEBUG モード

// 本番では必ず false
define('WP_DEBUG', false);

// 開発環境では true にして警告を画面に表示
define('WP_DEBUG', true);

// ログだけ書き出す(画面表示はしない、本番調査向け)
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', true);
// → wp-content/debug.log にログが書かれる

// SQL クエリのログ取得
define('SAVEQUERIES', true);
// グローバル $wpdb->queries に [SQL, 実行時間, 呼出元] が積まれる
// 本番では性能影響大、必ず開発のみで使用

その他の便利な定数

// Heartbeat の頻度(管理画面で WP が定期 POST する仕組み)
// 負荷軽減したい場合は disable プラグイン or 間隔調整

// 自動更新の無効化
define('AUTOMATIC_UPDATER_DISABLED', true);

// プラグイン / テーマ自動更新
define('WP_AUTO_UPDATE_CORE', 'minor');  // false / true / 'minor'

// メモリ上限
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

// ファイル編集禁止(管理画面のテーマエディタ等)
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);     // プラグイン追加も禁止

// 自動保存の間隔(秒)
define('AUTOSAVE_INTERVAL', 60);

// リビジョン保存数
define('WP_POST_REVISIONS', 3);
// または false で完全無効

// FORCE_SSL(管理画面 HTTPS 強制)
define('FORCE_SSL_ADMIN', true);

wp-cli で設定を変更する

# wp-config.php 自動生成
wp config create \
  --dbname=wordpress \
  --dbuser=wp_user \
  --dbpass='secret' \
  --dbhost=localhost \
  --dbcharset=utf8mb4 \
  --dbcollate=utf8mb4_unicode_ci \
  --dbprefix=wp_

# 個別に取得
wp config get DB_HOST
wp config get DB_NAME

# 個別に設定
wp config set DB_HOST db.example.com
wp config set WP_DEBUG true --raw    # --raw で true/false を真偽値として書き込み

# 削除
wp config delete WP_DEBUG_LOG

# DB 接続テスト
wp db check
wp db query "SELECT VERSION();"

レンタルサーバーでの設定例

サーバーDB_HOST 例備考
エックスサーバーmysql****.xserver.jp各サーバーごとに DB ホスト名が異なる
ConoHa WINGmysql***.php.conoha.ne.jp管理パネルで確認
ロリポップmysql***.phy.lolipop.lan
さくらインターネットmysql***.db.sakura.ne.jp
AWS Lightsaillocalhost1 インスタンス内
Amazon RDSxxx.****.rds.amazonaws.comSSL 推奨

Docker での DB 設定例

# docker-compose.yml
version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    depends_on: [db]
    ports: ["8080:80"]
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: secret
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_TABLE_PREFIX: wp_
      WORDPRESS_DEBUG: 1
    volumes:
      - wp_data:/var/www/html

  db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: rootsecret
    volumes:
      - db_data:/var/lib/mysql

volumes:
  wp_data:
  db_data:

Docker イメージは WORDPRESS_* 環境変数を読んで wp-config.php を自動生成します。

サイト移行とDB設定の更新

本番からステージング、または逆方向にデータベースを移行する際は、DB 設定変更だけでなくURL / パス置換が必要です:

# wp-cli の search-replace(シリアライズ対応で安全)
wp search-replace 'https://old.example.com' 'https://new.example.com' \
  --skip-columns=guid \
  --all-tables-with-prefix

# dry-run でまず確認
wp search-replace 'old' 'new' --dry-run

# 物理ファイル群はそのまま移行 → wp-config.php の DB_* を更新

主な移行プラグイン

  • Duplicator — ファイル + DB の zip パッケージ作成・展開
  • All-in-One WP Migration — 1 クリックエクスポート / インポート
  • UpdraftPlus — バックアップ + 移行
  • WP Migrate DB — DB だけ移行(URL 置換も同時)

セキュリティのチェックリスト

  • DB_USER は root を使わない、サイト専用ユーザー
  • パスワードは英数記号 16 文字以上
  • $table_prefix をデフォルト wp_ から変える
  • 外部 DB なら必ず SSL 接続
  • wp-config.php のパーミッションを 640 / 600 に
  • 本番では WP_DEBUG = false 厳守
  • 定期的に DB バックアップ(DB 単体 + ファイル)

FAQ

Q: Error establishing a database connection が出る
A: DB_HOST / DB_USER / DB_PASSWORD / DB_NAME のいずれかが間違っているか、DB サーバーが停止しています。コマンドラインで mysql -h ホスト -u user -p を試して切り分けてください。

Q: 絵文字が文字化けする
A: DB_CHARSET を utf8mb4 に変更し、既存テーブルもユーティリティで utf8mb4 に変換。wp-cli や Better Search Replace で実行できます。

Q: $table_prefix を後から変える方法
A: ① 全テーブルを RENAME ② options テーブル内の {prefix}user_roles を更新 ③ usermeta 内の {prefix}capabilities 等を更新。手作業ではミスりやすいのでBetter Search Replace + 専用プラグイン推奨。

Q: WP_DEBUG_LOG の出力先を変えたい
A: define('WP_DEBUG_LOG', '/var/log/wordpress/debug.log'); のように絶対パスを指定可能(5.1+)。