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 は元に戻せないので、実行前にバックアップを取る

お気軽にご相談ください

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