タイトル: DB設定
SEOタイトル: WordPress DB 設定完全ガイド (wp-config.php)
| この記事の要点 |
|
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_NAME | WordPress 用 DB の名前 | wordpress |
DB_USER | DB に接続するユーザー | wp_user |
DB_PASSWORD | そのユーザーのパスワード | ... |
DB_HOST | DB サーバーのホスト名 | 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 WING | mysql***.php.conoha.ne.jp | 管理パネルで確認 |
| ロリポップ | mysql***.phy.lolipop.lan | — |
| さくらインターネット | mysql***.db.sakura.ne.jp | — |
| AWS Lightsail | localhost | 1 インスタンス内 |
| Amazon RDS | xxx.****.rds.amazonaws.com | SSL 推奨 |
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+)。