2026年8月4日
2026年8月4日
WP-CLIのwp dbコマンド一覧と使い方(export・import・query・search)
wp db は、WP-CLI から WordPress のデータベースを操作するコマンド群です。wp-config.php の接続情報(DB_NAME・DB_USER・DB_PASSWORD・DB_HOST)を自動で読むため、パスワードを入力せずにバックアップや SQL の実行ができます。
多くのサブコマンドは内部でサーバーの mysql / mysqldump / mysqlcheck コマンドを呼び出します。これらのクライアントがサーバーに入っていないと、wp db export などは動きません。
WP-CLI を用意する
公式の手順では、phar ファイルをダウンロードして実行できる場所に置きます。
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info # 動作確認
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --info
以降のコマンドは、WordPress をインストールしたディレクトリで実行するか、--path=/var/www/html のように場所を指定します。root で実行すると WP-CLI はエラーを出して止まります。Web サーバーと同じユーザー(例: sudo -u www-data wp ...)で実行するのが基本です。--allow-root は root での実行を許可するオプションで、プラグインやテーマのコードも root 権限で動くことになるため、常用は避けます。
サブコマンドの一覧
| コマンド | できること |
|---|---|
wp db export |
データベースを SQL ファイルに書き出す(mysqldump を使用) |
wp db import |
SQL ファイルを読み込む |
wp db query |
SQL を実行する |
wp db search |
データベース全体から文字列を探す |
wp db tables |
テーブルの一覧を表示する |
wp db size |
データベースやテーブルのサイズを表示する |
wp db columns |
テーブルの列の情報を表示する |
wp db prefix |
テーブル接頭辞を表示する |
wp db check / optimize / repair |
テーブルの検査・最適化・修復(mysqlcheck を使用) |
wp db cli |
mysql の対話コンソールを開く |
wp db create / drop / reset / clean |
データベースの作成・削除、テーブルの全削除 |
公式のコマンドリファレンス(developer.wordpress.org/cli/commands/db/)に載っているサブコマンドは、ほかに connect(cli と同じ)と dump(export と同じ)があります(2026年10月時点)。wp db drop-table のようなテーブル単位の削除コマンドはありません。
バックアップ: wp db export
# データベース全体(ファイル名を指定)
wp db export backup-$(date +%Y%m%d).sql
# 特定のテーブルだけ
wp db export options-users.sql --tables=wp_options,wp_users
# 特定のテーブルを除く
wp db export --exclude_tables=wp_actionscheduler_logs
# 標準出力に出して圧縮する
wp db export - | gzip > backup.sql.gz
ファイル名を省略すると {dbname}-{日付}-{ランダムな文字列}.sql という名前で保存されます。-- で始まるほかのオプションは mysqldump にそのまま渡されます。
書き出したファイルには、ユーザーのメールアドレスやパスワードのハッシュが含まれます。ドキュメントルートの下には置かず、作業後はサーバー外の安全な場所へ移します。
復元: wp db import
wp db import backup-20261001.sql
# 圧縮したファイルを標準入力から読む
gunzip -c backup.sql.gz | wp db import -
wp db import にはテーブルを選ぶオプションはありません。ファイルに含まれる SQL をすべて実行します。特定のテーブルだけを戻したいときは、wp db export --tables=... でそのテーブルだけを書き出したファイルを用意しておきます。
インポートは既存のデータを上書きします。実行前に、今の状態を wp db export で保存しておくと戻せます。既定ではインポート中に一意キーと外部キーの検査を無効にして高速化しており、--skip-optimization を付けるとこの無効化を行いません。
SQL を実行する: wp db query
# テーブル接頭辞を確認する
wp db prefix
# サイトの URL を確認する(列名の行を省く)
wp db query "SELECT option_value FROM wp_options WHERE option_name = 'siteurl'" --skip-column-names
# SQL ファイルを実行する
wp db query < report.sql
テーブル名は接頭辞に合わせて書き換えます(接頭辞が wp_ 以外のサイトも多くあります)。マルチサイトでは --url を指定しても wp db query のテーブル名は変わらないため、2番目のサイトなら wp_2_options のように自分で書きます。
ユーザーや投稿の情報を見るだけなら、wp user list や wp post list のほうが接頭辞を気にせずに済みます。
wp user list --fields=ID,user_login,user_email
UPDATE や DELETE も実行できますが、WordPress のキャッシュやフックを通らずに直接書き換わります。メールアドレスの変更なら wp user update 1 --user_email=new@example.com のように、専用のコマンドを使うほうが安全です。
文字列を探す: wp db search
wp db search は、データベースの中から文字列を探して、テーブル名・列名・行の ID と前後の文字を表示します。データは変更しません。
# 旧ドメインが残っている場所を探す
wp db search 'old.example.com'
# 件数と所要時間も表示する
wp db search 'old.example.com' --stats
# 1つのテーブルだけを、1行ずつの形式で
wp db search 'old.example.com' wp_postmeta --one_line
# 正規表現で探す(既定で大文字小文字を区別)
wp db search 'https?://old\.example\.com' --regex
既定では WordPress に登録されたテーブルだけが対象です。プラグインが作った独自テーブルも含めるなら --all-tables-with-prefix を付けます。見つかった文字列を置き換えるには、シリアライズされたデータも正しく扱える wp search-replace を使います。
テーブルの確認と保守
wp db tables # 登録されたテーブル
wp db tables --all-tables-with-prefix
wp db size --tables --human-readable --orderby=size --order=desc
wp db columns wp_posts # 列の型やキー
wp db check # 全テーブルの検査
wp db optimize # 最適化
wp db repair # 修復(MyISAM など修復に対応したテーブル)
wp db size --tables で大きいテーブルを見つけると、リビジョンやログ系のテーブルの肥大化に気づけます。optimize と repair はテーブルをロックすることがあるため、アクセスの少ない時間帯に実行します。InnoDB のテーブルは REPAIR TABLE に対応しておらず、repair を実行しても修復されない旨のメッセージが出ます。
削除系のコマンドは特に注意する
| コマンド | 動作 |
|---|---|
wp db reset |
データベース内のテーブルをすべて削除する |
wp db clean |
テーブル接頭辞に一致するテーブルをすべて削除する |
wp db drop |
データベースそのものを削除する |
どれも元に戻せません。実行すると確認を求められ、--yes を付けると確認なしで実行されます。スクリプトに --yes 付きで書くのは避け、実行前に wp db export でバックアップを取ってください。特定のテーブルだけを削除したい場合は、バックアップを取ったうえで wp db query "DROP TABLE テーブル名" を実行します。
まとめ
wp dbは wp-config.php の接続情報を使い、内部で mysql / mysqldump を呼び出す- バックアップは
wp db export(--tables/--exclude_tablesで範囲を指定)、復元はwp db import(テーブル指定はできない) wp db queryのテーブル名は接頭辞に合わせて書く。ユーザーや投稿の操作は専用コマンドのほうが安全- 文字列の確認は
wp db search、置き換えはwp search-replace reset/clean/dropは元に戻せないので、実行前にバックアップを取る