mysqldumpコマンドとは
mysqldump クライアントユーティリティは logical backups を実行し、元のデータベースオブジェクト定義およびテーブルデータを再現するために実行できる一連の SQL ステートメントを生成します。 別の SQL サーバーにバックアップまたは転送するために、1 つ以上の MySQL データベースをダンプします。 mysqldump コマンドは、CSV、その他の区切り文字で区切られたテキスト、または XML 形式でも出力を生成できます。
Command tips
対象バージョン
この記事の対象バージョンは、8.0.41(2025/04/02時点最新)です。
よく使うコマンド入力
Export
mysqldump -h localhost -u root -p dbname > dump.sql複数DB Export
mysqldump -h localhost -u root -p --databases dbname dbnam2 dbname3 > dump.sql特定テーブルのみExport
mysqldump -h localhost -u root -p dbname --tables table1 table2 > dump.sqlよく使うコマンドオプション一覧
| option | 説明 |
|---|---|
--host=-h | 与えられたホスト上の MySQL サーバーからデータをダンプします。 デフォルトホストは localhost です。 |
--port=-P | TCP/IP 接続の場合、使用するポート番号。 |
--user=-u | サーバーへの接続に使用する MySQL アカウントのユーザー名。 |
--password[=-p[ | サーバーへの接続に使用される MySQL アカウントのパスワード。 パスワード値はオプションです。 指定しない場合、mysqldump によってプロンプトが表示されます。 指定する場合は、--password= または -p とそれに続くパスワードの間にスペースなしが存在する必要があります。 パスワードオプションを指定しない場合、デフォルトではパスワードは送信されません。 |
--no-data-d | テーブルの行情報を書き出しません (つまり、テーブルの内容をダンプしません)。 これは、テーブルの CREATE TABLE ステートメントのみをダンプする場合に便利です (たとえば、ダンプファイルをロードしてテーブルの空のコピーを作成する場合など)。 |
| --tables | このオプションに続く名前の引数をすべてテーブル名とみなします。 |
--extended-insert-e | 複数の VALUES リストを含む複数行構文を使用して INSERT ステートメントを記述します。 これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。 |
※上記以外のオプションについては公式サイトを参照
補足情報
create database
mysqldumpコマンドで作成されるdumpファイルはCREATE DATABASEステートメントは含まれません。そのため、importする際はあらかじめデータベースを作成する必要があります。
もし、CREATE DATABASEステートメントを含めたい場合は以下オプションを追加してください。
| option | 説明 |
|---|---|
--databases-B | 複数のデータベースをダンプします。 通常、mysqldump は、コマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。 このオプションを使用すると、名前引数をすべてデータベース名として処理します。 出力には、各新しいデータベースの前に CREATE DATABASE ステートメントおよび USE ステートメントが含まれます。 |
| --add-drop-database | 各 CREATE DATABASE ステートメントの前に DROP DATABASE ステートメントを記述します。 |

