第 4 章 MySQL プログラム

目次

4.1 MySQL プログラムの概要
4.2 MySQL プログラムの使用
4.2.1 MySQL プログラムの起動
4.2.2 MySQL サーバーへの接続
4.2.3 プログラムオプションの指定
4.2.4 コマンド行でのオプションの使用
4.2.5 プログラムオプション修飾子
4.2.6 オプションファイルの使用
4.2.7 オプションファイルの処理に影響するコマンド行オプション
4.2.8 プログラム変数の設定へのオプションの使用
4.2.9 オプションのデフォルト、値を想定するオプション、および = 記号
4.2.10 環境変数の設定
4.3 MySQL サーバーとサーバー起動プログラム
4.3.1 mysqld — MySQL サーバー
4.3.2 mysqld_safe — MySQL サーバー起動スクリプト
4.3.3 mysql.server — MySQL サーバー起動スクリプト
4.3.4 mysqld_multi — 複数の MySQL サーバーの管理
4.4 MySQL インストール関連のプログラム
4.4.1 comp_err — MySQL エラーメッセージファイルのコンパイル
4.4.2 mysqlbug — バグレポートの生成
4.4.3 mysql_install_db — MySQL データディレクトリの初期化
4.4.4 mysql_plugin — MySQL サーバープラグインの構成
4.4.5 mysql_secure_installation — MySQL インストールのセキュリティー改善
4.4.6 mysql_tzinfo_to_sql — タイムゾーンテーブルのロード
4.4.7 mysql_upgrade — MySQL テーブルのチェックとアップグレード
4.5 MySQL クライアントプログラム
4.5.1 mysql — MySQL コマンド行ツール
4.5.2 mysqladmin — MySQL サーバーの管理を行うクライアント
4.5.3 mysqlcheck — テーブル保守プログラム
4.5.4 mysqldump — データベースバックアッププログラム
4.5.5 mysqlimport — データインポートプログラム
4.5.6 mysqlshow — データベース、テーブル、およびカラム情報の表示
4.5.7 mysqlslap — 負荷エミュレーションクライアント
4.6 MySQL 管理プログラムおよびユーティリティープログラム
4.6.1 innochecksum — オフライン InnoDB ファイルチェックサムユーティリティー
4.6.2 myisam_ftdump — 全文インデックス情報の表示
4.6.3 myisamchk — MyISAM テーブルメンテナンスユーティリティー
4.6.4 myisamlog — MyISAM ログファイルの内容の表示
4.6.5 myisampack — 圧縮された読み取り専用の MyISAM テーブルの生成
4.6.6 mysql_config_editor — MySQL 構成ユーティリティー
4.6.7 mysqlaccess — アクセス権限をチェックするクライアント
4.6.8 mysqlbinlog — バイナリログファイルを処理するためのユーティリティー
4.6.9 mysqldumpslow — スロークエリーログファイルの要約
4.6.10 mysqlhotcopy — データベースバックアッププログラム
4.6.11 mysql_convert_table_format — 指定されたストレージエンジンを使用するためのテーブルの変換
4.6.12 mysql_find_rows — ファイルからの SQL ステートメントの抽出
4.6.13 mysql_fix_extensions — テーブルファイル名の拡張子の正規化
4.6.14 mysql_setpermission — 付与テーブルに許可をインタラクティブに設定
4.6.15 mysql_waitpid — プロセスを強制終了して終了を待機
4.6.16 mysql_zap — パターンに一致するプロセスを強制終了
4.7 MySQL プログラム開発ユーティリティー
4.7.1 msql2mysql — mSQL プログラムを MySQL で使用するために変換
4.7.2 mysql_config — クライアントのコンパイル用オプションの表示
4.7.3 my_print_defaults — オプションファイルからのオプションの表示
4.7.4 resolve_stack_dump — 数値スタックトレースダンプをシンボルに解決
4.8 その他のプログラム
4.8.1 perror — エラーコードの説明
4.8.2 replace — 文字列置換ユーティリティー
4.8.3 resolveip — ホスト名と IP アドレスの解決

この章では、Oracle Corporation が提供する MySQL コマンド行プログラムの簡単な概要を説明します。また、これらのプログラムを実行するときに、オプションを指定するための一般的な構文についても説明します。ほとんどのプログラムには、その動作に固有のオプションがありますが、オプションの構文はそれらすべてに関して同様です。最後に、この章では個々のプログラムが認識するオプションを含め、詳細を説明します。

4.1 MySQL プログラムの概要

MySQL インストールには多くのさまざまなプログラムがあります。このセクションでは、それらの概要を簡単に説明します。そのあとのセクションで、それぞれをより詳細に説明しますが、MySQL Cluster プログラムは例外です。各プログラムの説明では、呼び出し構文とサポートされるオプションを示します。セクション18.4「MySQL Cluster プログラム」では、MySQL Cluster に固有のプログラムについて説明します。

ほとんどの MySQL 配布には、これらのプログラムが (プラットフォーム固有のプログラムを除き) すべて含まれます。(たとえば、サーバー起動スクリプトは Windows では使用されません。)例外は、RPM 配布はより専門化されているということです。サーバー用に 1 つの RPM があり、クライアントプログラム用にもう 1 つ、などです。もし 1 つまたは複数のプログラムが欠けているようであれば、第2章「MySQL のインストールと更新を参照して、配布のタイプとその内容を確認してください。配布がすべてのプログラムを含んではおらず、追加のパッケージをインストールする必要がある場合もあります。

各 MySQL プログラムは多くのさまざまなオプションを取ります。ほとんどのプログラムには --help オプションがあり、プログラムのさまざまなオプションの説明を取得するために使用できます。たとえば、mysql --help を試してみてください。

MySQL プログラムのデフォルトのオプション値は、コマンド行のオプションまたはオプションファイルを指定して、オーバーライドできます。プログラムの起動と、プログラムオプションの指定に関する一般的な情報については、セクション4.2「MySQL プログラムの使用」を参照してください。

MySQL Server mysqld は、MySQL インストールのほとんどの作業を実行するメインプログラムです。サーバーには、サーバーの起動と停止を支援する、関係するいくつかのスクリプトが付随します。

いくつかのプログラムは、MySQL のインストール中またはアップグレード中に、セットアップ操作を実行します。

MySQL サーバーに接続するクライアントプログラム。

MySQL 管理プログラムおよびユーティリティープログラム:

MySQL プログラム開発ユーティリティー:

その他のユーティリティー:

Oracle Corporation は、MySQL Workbench GUI も提供します。これは、MySQL サーバーおよびデータベースの管理、クエリーの作成、実行、評価、およびほかのリレーショナルデータベース管理システムからのスキーマおよびデータを MySQL で使用するための移行を行うために使用されます。その他の GUI ツールには、MySQL Notifier および MySQL for Excel などがあります。

MySQL クライアント/サーバーライブラリを使用してサーバーと通信する MySQL クライアントプログラムは、次の環境変数を使用します。

環境変数意味
MYSQL_UNIX_PORTlocalhost への接続に使用される、デフォルト Unix ソケットファイル
MYSQL_TCP_PORTTCP/IP 接続に使用されるデフォルトのポート番号
MYSQL_PWDデフォルトパスワード
MYSQL_DEBUGデバッグ中のデバッグトレースオプション
TMPDIR一時テーブルや一時ファイルが作成されるディレクトリ

MySQL プログラムが使用する環境変数の全リストについては、セクション2.12「環境変数」を参照してください。

MYSQL_PWD の使用はセキュアではありません。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。

4.2 MySQL プログラムの使用

4.2.1 MySQL プログラムの起動

MySQL プログラムをコマンド行から (つまり、シェルまたはコマンドプロンプトから) 起動するには、プログラム名に続けて、実行させたいことをプログラムに指示するために必要な任意のオプションまたはその他の引数を入力します。次のコマンドは、プログラム起動の例です。shell> は、コマンドインタプリタのプロンプトを示します。この部分は入力には含まれません。表示される具体的なプロンプトは、コマンドインタプリタによって異なります。通常のプロンプトは、shksh、または bash では $csh または tcsh では %、Windows command.com または cmd.exe コマンドインタプリタでは C:\> です。

shell> mysql --user=root testshell> mysqladmin extended-status variablesshell> mysqlshow --helpshell> mysqldump -u root personnel

単一または二重のダッシュ (---) で始まる引数は、プログラムオプションを指定します。オプションは通常、プログラムが行うサーバーへの接続のタイプを示したり、動作モードに影響したりします。オプション構文についてはセクション4.2.3「プログラムオプションの指定」で説明します。

オプションではない引数 (先頭にダッシュのない引数) は、プログラムに追加情報を提供します。たとえば、mysql プログラムは最初のオプションではない引数をデータベース名として解釈するため、コマンド mysql --user=root testtest データベースを使用することを示します。

個々のプログラムについて説明しているこのあとのセクションでは、プログラムがどのオプションをサポートするかを示し、追加のオプションではない引数があればその意味を説明しています。

一部のオプションは、複数のプログラムで共通です。これらのうち、もっともよく使用されるのは、接続パラメータを指定する --host (または -h)、--user (または -u)、および --password (または -p) の各オプションです。これらは、MySQL サーバーが稼働しているホストの名前、MySQL アカウントのユーザー名とパスワードを示します。すべての MySQL クライアントプログラムは、これらのオプションを理解します。これらのオプションにより、どのサーバーに接続するか、およびそのサーバーで使用するアカウントを指定できます。その他の接続オプションとしては、TCP/IP ポート番号を指定する --port (または -P)、そして Unix 上で Unix ソケットファイル (Windows では名前付きパイプ名) を指定する --socket (または -S) があります。接続オプションを指定するオプションの詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

MySQL プログラムを起動するために、プログラムがインストールされている bin ディレクトリのパス名を使用する必要がある場合があります。bin ディレクトリ以外のディレクトリから MySQL を起動しようとすると毎回 program not found というエラーが表示される場合は、この場合に該当する可能性があります。MySQL プログラムをより使いやすくするために、MySQL の bin ディレクトリのパス名を PATH 環境変数設定に追加できます。それにより、プログラムのパス名全体ではなく名前のみを入力して実行できます。たとえば、mysql/usr/local/mysql/bin にインストールされている場合、mysql と呼び出すことでプログラムを実行可能であり、/usr/local/mysql/bin/mysql と呼び出す必要はありません。

PATH 変数の設定する際の手順については、コマンドインタプリタのドキュメントを参照してください。環境変数を設定するための構文は、インタプリタ固有です。(これに関する説明は、セクション4.2.10「環境変数の設定」で述べられています。)PATH 設定を変更したら、設定が反映されるように、Windows の場合は新しいコンソールウィンドウを開き、Unix の場合はログインしなおします。

4.2.2 MySQL サーバーへの接続

クライアントプログラムが MySQL サーバーに接続できるためには、サーバーが稼働しているホストの名前および MySQL アカウントのユーザー名とパスワードなどの、適切な接続パラメータを使用する必要があります。各接続パラメータにはデフォルト値がありますが、必要に応じてコマンド行またはオプションファイルでプログラムオプションを指定することによってオーバーライドできます。

次の例は mysql クライアントプログラムを使用しますが、原則は mysqldumpmysqladmin、または mysqlshow など、ほかのクライアントにも適用されます。

次のコマンドは、接続パラメータを明示的に指定せずに mysql を呼び出します。

shell> mysql

パラメータオプションがないため、デフォルト値が適用されます。

  • デフォルトのホスト名は localhost です。Unix では、後述するようにこれには特別な意味があります。

  • デフォルトのユーザー名は、Windows では ODBC、Unix では Unix のログイン名です。

  • -p--password も指定しない場合は、パスワードは送信されません。

  • mysql では、最初のオプションではない引数はデフォルトデータベースの名前とみなされます。そのようなオプションがない場合は、mysql はデフォルトデータベースを選択しません。

パスワードのほか、ホスト名およびユーザー名を明示的に指定するには、コマンド行で適切なオプションを指定します。

shell> mysql --host=localhost --user=myname --password=mypass mydbshell> mysql -h localhost -u myname -pmypass mydb

パスワードオプションについては、パスワード値はオプションです。

  • -p または --password オプションを使用してパスワード値を指定する場合、-p または --password とそれに続くパスワードとの間にスペースがあってはいけません

  • -p または --password オプションを使用するがパスワード値を指定しない場合、パスワードを入力するようクライアントプログラムが要求します。パスワードは入力時に表示されません。これは、コマンド行でパスワードを提供するよりもセキュアです。システム上のほかのユーザーが ps auxw などのコマンドを実行して、コマンド行で指定されたパスワードを見ることができる場合があります。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。

今述べたように、コマンド行にパスワード値を含めるのはセキュリティー上のリスクになり得ます。この問題を解決するには、パスワード値を入れずに --password または -p オプションを指定します。

shell> mysql --host=localhost --user=myname --password mydbshell> mysql -h localhost -u myname -p mydb

パスワードオプションにパスワード値がない場合、クライアントプログラムはプロンプトを出力して、ユーザーがパスワードを入力するのを待機します。(これらの例では、mydb はその前のパスワードオプションとスペースで区切られているため、パスワードとは解釈されません。)

システムによっては、MySQL がパスワードを要求するために使用するライブラリルーチンが、自動的にパスワードを 8 文字に制限します。これはシステムライブラリの問題であり、MySQL の問題ではありません。内部的には、MySQL にはパスワードの長さに関する制限はありません。この問題を回避するには、MySQL のパスワードを 8 文字以下の値に変更するか、またはオプションファイルにパスワードを指定します。

Unix では、MySQL プログラムはホスト名 localhost を、ほかのネットワークベースのプログラムと比較して想定されるのとはおそらく異なる、特別な方法で扱います。localhost への接続で、MySQL プログラムは Unix ソケットファイルを使用してローカルサーバーに接続しようとします。これは、ポート番号を指定するために --port または -P オプションが与えられた場合にも生じます。クライアントがローカルサーバーに TCP/IP 接続を行うことを保証するには、--host または -h を使用して、ホスト名の値 127.0.0.1、またはローカルサーバーの IP アドレスまたは名前を指定します。--protocol=TCP オプションを使用して、localhost に対しても、接続プロトコルを明示的に指定することもできます。例:

shell> mysql --host=127.0.0.1shell> mysql --protocol=TCP

--protocol オプションを使用すると、その他のオプションが通常デフォルトでほかのプロトコルになる場合でも、特定のタイプの接続を確立できます。

サーバーが IPv6 接続を受け付けるように構成されている場合、クライアントは --host=::1 を使用して IPv6 で接続できます。セクション5.1.9「IPv6 サポート」を参照してください。

Windows では、--pipe または --protocol=PIPE オプションを指定するか、または .(ピリオド) をホスト名として指定することによって、MySQL クライアントが名前付けパイプ接続を使用することを強制できます。名前付きパイプ接続が有効にされていない場合は、エラーが発生します。デフォルトのパイプ名を使用しない場合には --socket オプションを使用してパイプ名を指定します。

リモートサーバーへの接続では、常に TCP/IP が使用されます。次のコマンドは、デフォルトのポート番号 (3306) を使用して remote.example.com で動作するサーバーに接続します。

shell> mysql --host=remote.example.com

ポート番号を明示的に指定するには、--port オプションまたは -P オプションを使用します。

shell> mysql --host=remote.example.com --port=13306

ローカルサーバーへの接続にもポート番号を指定できます。ただし前述のように、Unix では localhost への接続にはデフォルトでソケットファイルが使用されます。前述のように TCP/IP 接続を強制しないと、ポート番号を指定するすべてのオプションは無視されます。

次のコマンドでは、Unix ではプログラムはソケットファイルを使用し、--port オプションは無視されます。

shell> mysql --port=13306 --host=localhost

ポート番号を使用するようにするには、プログラムを次のいずれかの方法で呼び出します。

shell> mysql --port=13306 --host=127.0.0.1shell> mysql --port=13306 --protocol=TCP

次のリストは、クライアントプログラムがサーバーに接続する方法を制御するために使用できるオプションの概要です。

  • --host=host_name, -h host_name

    サーバーが稼働しているホスト。デフォルト値は localhost です。

  • --password[=pass_val], -p[pass_val]

    MySQL アカウントのパスワード。前述のように、パスワード値はオプションですが、指定する場合は -p または --password= とそれに続くパスワードとの間にスペースがあってはいけません。デフォルトではパスワードを送信しません。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。名前付きパイプ接続を可能にするには、サーバーは --enable-named-pipe オプションで起動する必要があります。

  • --port=port_num, -P port_num

    TCP/IP を使用する接続で、接続に使用するポート番号。デフォルトのポート番号は 3306 です。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    このオプションは、サーバーへの接続に使用するプロトコルを明示的に指定します。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。たとえば、Unix では localhost への接続はデフォルトでは Unix ソケットファイルを使用して行われます。

    shell> mysql --host=localhost

    代わりに TCP/IP 接続を強制するには、--protocol オプションを指定します。

    shell> mysql --host=localhost --protocol=TCP

    次の表は、許可される --protocol オプション値を示し、各値を使用できるプラットフォームを示しています。値は大文字と小文字が区別されません。

    --protocol の値接続プロトコル許可されるオペレーティングシステム
    TCPローカルまたはリモートのサーバーへの TCP/IP 接続すべて
    SOCKETローカルサーバーへの Unix ソケットファイル接続Unix のみ
    PIPEローカルまたはリモートのサーバーへの名前付きパイプ接続Windows のみ
    MEMORYローカルサーバーへの共有メモリー接続Windows のみ
  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --socket=file_name, -S file_name

    Unix で、名前付きパイプを使用して行われるローカルサーバーへの接続で使用する Unix ソケットファイルの名前。デフォルトの Unix ソケットファイル名は /tmp/mysql.sock です。

    Windows の場合、ローカルサーバーへの接続で、使用する名前付きパイプの名前。デフォルトの Windows パイプ名は MySQL です。パイプ名では大文字と小文字を区別しません。

    名前付きパイプ接続を可能にするには、サーバーは --enable-named-pipe オプションで起動する必要があります。

  • --ssl*

    --ssl で始まるオプションは、サーバーが SSL サポートで構成されている場合には、SSL を使用してサーバーへのセキュアな接続を確立するために使用されます。詳細については、セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    使用する MySQL アカウントのユーザー名。デフォルトのユーザー名は、Windows では ODBC、Unix では Unix のログイン名です。

クライアントプログラムを呼び出すたびに異なるデフォルト値を入力しなくてもいいように、コマンド行で接続を行うときに、それらを使用するように指定できます。これはいくつかの方法で実行できます。

4.2.3 プログラムオプションの指定

MySQL プログラムに対してオプションを指定する方法はいくつかあります。

  • コマンド行で、プログラム名に続けてオプションをリストします。これは、プログラムの特定の起動に適用されるオプションに共通です。

  • プログラムが起動するときに読み取るオプションファイルにオプションをリストします。これは、プログラムを実行するとき毎回使用するオプションに共通です。

  • 環境変数にオプションをリストします (セクション4.2.10「環境変数の設定」を参照してください)。この方法は、プログラムを実行するとき毎回適用するオプションに便利です。実際には、このためにはオプションファイルを使用する方が一般的ですが、環境変数が非常に役立つ状況については、セクション5.3.3「Unix 上での複数の MySQL インスタンスの実行」で説明しています。そこでは、このような変数を使用して、サーバーとクライアントプログラムに対して TCP/IP のポート番号および Unix ソケットファイルを指定する便利なテクニックについて説明しています。

オプションは順に処理されるため、あるオプションが複数回指定されている場合、最後のものが優先されます。次のコマンドでは、mysqllocalhost で稼働しているサーバーに接続します。

shell> mysql -h example.com -h localhost

矛盾するオプションまたは関係するオプションが指定された場合、あとのオプションが先のオプションより優先されます。次のコマンドは mysqlカラム名なしモードで起動します。

shell> mysql --column-names --skip-column-names

MySQL プログラムは、まず環境変数を調べ、次にオプションファイルを読み取り、その次にコマンド行をチェックすることで、どのオプションが指定されたかを判断します。すなわち、環境変数はもっとも優先順位が低く、コマンド行のオプションがもっとも高くなります。

MySQL プログラムがオプションを処理する方法を利用して、プログラムのデフォルトオプション値をオプションファイルに指定できます。それにより、プログラムを実行するたびに入力するのを避けることができると同時に、必要に応じてコマンド行オプションを使用することにより、デフォルトをオーバーライドできます。

オプションは、すべて記述するか、またはあいまいでないプリフィクスとして指定できます。たとえば--compress オプションは --compr として mysqldump に指定できますが、--comp としては指定できません。後者はあいまいなためです。

shell> mysqldump --compmysqldump: ambiguous option '--comp' (compatible, compress)

オプションのプリフィクスを使用すると、プログラムに対して新しいオプションが実装された場合に問題となることがあることに注意してください。現在あいまいでないプリフィクスが、将来あいまいになる可能性があります。

注記

MySQL 5.6.13 以降、あいまいでないプリフィクスは非推奨です。あいまいでないプリフィクスが指定された場合、フィードバックを提供するため警告が発生します。オプションのプリフィクスは MySQL 5.7 ではサポートされなくなりました。完全なオプションのみが受け入れられます。

4.2.4 コマンド行でのオプションの使用

コマンド行で指定されるプログラムオプションは次のルールに従います。

  • オプションはコマンド名のあとに指定します。

  • オプション引数は、それがオプション名の短い形式か長い形式かによって、1 つまたは 2 つのダッシュで始まります。多くのオプションには短い形式と長い形式の両方があります。たとえば、-?--help は、 MySQL プログラムに対してヘルプメッセージの表示を指示するオプションの短い形式と長い形式です。

  • オプション名では大文字と小文字が区別されます。-v-V はいずれも正当で、異なる意味を持ちます。(これらは、--verbose および --version オプションに対応する短い形式です。)

  • 一部のオプションは、オプション名に続いて値を取ります。たとえば、-h localhost または --host=localhost は、クライアントプログラムに対して MySQL サーバーホストを示します。オプション値は、プログラムに対して MySQL サーバーが稼働しているホストの名前を示します。

  • 値を取る長いオプションでは、オプション名と値を = 記号で区切ります。値を取る短いオプションでは、オプション値はオプション文字の直後に続けるか、または間にスペースがあってもかまいません。-hlocalhost-h localhost は同等です。このルールの例外は、MySQL のパスワードを指定するオプションです。このオプションは、長い形式で --password=pass_val として、または --password として指定できます。後者の場合 (パスワード値を指定しない場合)、プログラムはパスワードを要求します。パスワードオプションは、短い形式で -ppass_val または -p としても指定できます。しかし短い形式の場合、パスワード値を指定する場合は、間にスペースを入れずにオプション文字に続けなければいけません。この理由は、オプション文字にスペースが続く場合、続く引数がパスワード値なのかほかの種類の引数なのかをプログラムが判断する方法がないためです。その結果、次の 2 つのコマンドは 2 つのまったく異なる意味を持ちます。

    shell> mysql -ptestshell> mysql -p test

    最初のコマンドは、パスワード値 test を使用することを mysql に指示しますが、デフォルトデータベースの指定は行いません。2 番目は、パスワード値を要求し、test をデフォルトデータベースとして使用することを mysql に指示します。

  • オプション名内では、ダッシュ (-) と下線 (_) を区別なく使用できます。たとえば、--skip-grant-tables--skip_grant_tables は同等です。(ただし、先頭のダッシュは下線で指定することはできません。)

  • 数値を取るオプションについては、値は、1024、10242 または 10243 の乗数を示すために、KM または G (大文字または小文字) のサフィクスで指定できます。たとえば、次のコマンドは mysqladmin に対し、サーバーに 1024 回 ping を実行し、各 ping の間に 10 秒間スリープすることを指示します。

    mysql> mysqladmin --count=1K --sleep=10 ping

スペースを含むオプション値をコマンド行で指定する場合は、引用符で囲まなければなりません。たとえば、--execute (または -e) オプションを mysql とともに使用して、SQL ステートメントをサーバーに渡すことができます。このオプションが使用されると、mysql はオプション値のステートメントを実行して終了します。ステートメントは引用符で囲む必要があります。たとえば、次のコマンドを使用してユーザーアカウントのリストを取得できます。

mysql> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"Enter password: ******+------+-----------+
| User | Host |
+------+-----------+
| | gigan |
| root | gigan |
| | localhost |
| jon | localhost |
| root | localhost |
+------+-----------+
shell>

長い形式 (--execute) には、等号 (=) が続くことに注意してください。

ステートメント内で引用符に囲まれた値を使用する場合は、内側の引用符をエスケープするか、ステートメント内ではステートメント自体を囲むのに使用する引用符とは異なるタイプの引用符を使用する必要があります。一重引用符または二重引用符を使用できるかどうか、および引用符文字をエスケープするための構文は、コマンドプロセッサの機能により異なります。たとえば、コマンドプロセッサが一重引用符または二重引用符の使用をサポートする場合、ステートメントの周囲には二重引用符を使用し、ステートメント内の引用符で囲む値には一重引用符を使用できます。

コマンド行のオプション値に複数の SQL ステートメントをセミコロンで区切って渡すことができます。

shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"Enter password: ******+-----------------+
| VERSION() |
+-----------------+
| 5.1.5-alpha-log |
+-----------------+
+---------------------+
| NOW() |
+---------------------+
| 2006-01-05 21:19:04 |
+---------------------+

4.2.5 プログラムオプション修飾子

一部のオプションはブール値で、オンまたはオフにできる動作を制御します。たとえば、mysql クライアントは、クエリーの結果の先頭にカラム名の行を表示するかどうかを決定するオプション --column-names をサポートします。デフォルトでは、このオプションは有効です。ただし、初期ヘッダーラインを想定せずデータのみを想定するような別のプログラムに mysql の出力を送信する場合などは、この機能を無効にするとよいでしょう。

カラム名を無効にするには、次のいずれかの形式を使用してオプションを指定します。

--disable-column-names
--skip-column-names
--column-names=0

--disable プリフィクスと --skip プリフィクス、および =0 サフィクスはすべて同じ効果を持ち、オプションをオフにします。

オプションを有効にする形式は、次のうちのいずれかで指定できます。

--column-names
--enable-column-names
--column-names=1

MySQL 5.6.2 以降では、ONTRUEOFF、および FALSE もブール値オプションとみなされます (大文字小文字は区別しません)。

オプションに --loose プリフィクスがある場合、プログラムがオプションを認知できない場合にはエラーで終了せず、警告のみを発行します。

shell> mysql --loose-no-such-optionmysql: WARNING: unknown option '--loose-no-such-option'

--loose プリフィクスは、MySQL を同じマシン上に複数回インストールした状態でプログラムを起動し、オプションファイルにオプションをリストする場合に役立ちます。プログラムのすべてのバージョンには認知されないようなオプションを --loose プリフィクス (またはオプションファイル内では loose) を使用して指定できます。オプションを認識するバージョンのプログラムは通常どおりに処理し、認識しないバージョンは警告を発行して無視します。

mysqld では、クライアントプログラムが設定できる動的システム変数の大きさに制限を設けることができます。これを実行するには、--maximum プリフィクスを変数名とともに使用します。たとえば、--maximum-query_cache_size=4M は、クライアントが 4M バイトを超えるクエリーキャッシュサイズを作成できなくなります。

4.2.6 オプションファイルの使用

ほとんどの MySQL プログラムはオプションファイル (構成ファイルと呼ばれることもあります) から起動オプションを読み取ることができます。オプションファイルは、よく使用されるオプションを指定するための便利な方法を提供し、プログラムを実行するたびにコマンド行で入力する必要がなくなります。MySQL サーバーには MySQL によって多数の事前構成済みのオプションファイルが提供されます。

プログラムがオプションファイルを読み取るかどうかを判断するには、--help オプションを使用してプログラムを呼び出します。(mysqld では、--verbose および --help を使用します。)プログラムがオプションファイルを読み取る場合は、どのファイルを探すのか、およびどのオプショングループを認識するのかが、ヘルプメッセージに示されます。

ログインパスオプションを含む .mylogin.cnf ファイルは、mysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。クライアントプログラムは、.mylogin.cnf からどのログインパスを読み取るのかを、--login-path オプションを使用して指定します。

別のファイル名を指定するには、MYSQL_TEST_LOGIN_FILE 環境変数を設定します。この変数は mysql-test-run.pl テストユーティリティーが使用しますが、mysql_config_editor および mysqlmysqladmin、などの MySQL クライアントによっても認識されます。

注記

MySQL Cluster プログラムで使用されるオプションファイルは、セクション18.3「MySQL Cluster の構成」で説明します。

Windows では、MySQL プログラムは起動オプションを次のファイルから指定された順 (トップの項目が最初に使用されます) で読み取ります。

ファイル名目的
%PROGRAMDATA%\MySQL\MySQL Server 5.6\my.ini, %PROGRAMDATA%\MySQL\MySQL Server 5.6\my.cnfグローバルオプション
%WINDIR%\my.ini, %WINDIR%\my.cnfグローバルオプション
C:\my.ini, C:\my.cnfグローバルオプション
INSTALLDIR\my.ini, INSTALLDIR\my.cnfグローバルオプション
defaults-extra-file--defaults-extra-file=path によって指定されるファイル (ある場合)
%APPDATA%\MySQL\.mylogin.cnfログインパスオプション

%PROGRAMDATA% は、ホスト上のすべてのユーザーのアプリケーションデータを含むファイルシステムディレクトリを示します。このパスはデフォルトで、Microsoft Windows Vista 以降では C:\ProgramData、Microsoft Windows のそれ以前のバージョンでは C:\Documents and Settings\All Users\Application Data です。

%WINDIR% は、Windows ディレクトリの場所を示します。これは一般には C:\WINDOWS です。次のコマンドを使用して WINDIR 環境変数の値から正確な場所を割り出すことができます。

C:\> echo %WINDIR%

INSTALLDIR は、MySQL のインストールディレクトリを示します。これは通常、MySQL 5.6 がインストールウィザードおよび構成ウィザードを使用してインストールされた場合には、C:\PROGRAMDIR\MySQL\MySQL 5.6 Server です。ここで、PROGRAMDIR はプログラムディレクトリ (英語バージョンの Windows では通常 Program Files) です。セクション2.3.3「MySQL Installer を使用した MySQL の Microsoft Windows へのインストール」を参照してください。

%APPDATA% は、Windows アプリケーションデータディレクトリの値を示します。次のコマンドを使用して APPDATA 環境変数の値から正確な場所を判断できます。

C:\> echo %APPDATA%

Unix、Linux、および OS X では、MySQL プログラムは起動オプションを次のファイルから指定された順 (トップの項目が最初に使用されます) で読み取ります。

ファイル名目的
/etc/my.cnfグローバルオプション
/etc/mysql/my.cnfグローバルオプション
SYSCONFDIR/my.cnfグローバルオプション
$MYSQL_HOME/my.cnfサーバー固有のオプション
defaults-extra-file--defaults-extra-file=path によって指定されるファイル (ある場合)
~/.my.cnfユーザー固有のオプション
~/.mylogin.cnfログインパスオプション

~ は、現在のユーザーのホームディレクトリ ($HOME の値) を示します。

SYSCONFDIR は、MySQL がビルドされたときに SYSCONFDIR オプションとともに CMake に指定されたディレクトリを示します。デフォルトでは、これはコンパイル済みのインストールディレクトリの下にある etc ディレクトリです。

MYSQL_HOME はサーバー固有の my.cnf ファイルが存在するディレクトリへのパスを含む環境変数です。MYSQL_HOME がセットされていない状態で mysqld_safe プログラムを使ってサーバーを起動すると、mysqld_safe は次のように MYSQL_HOME をセットしようとします。

  • BASEDIR および DATADIR が、それぞれ MySQL ベースディレクトリとデータディレクトリのパス名を示すようにします。

  • DATADIR には my.cnf ファイルが存在し、BASEDIR には存在しない場合、mysqld_safeMYSQL_HOMEDATADIR にセットします。

  • そうでない場合は、MYSQL_HOME がセットされておらず、my.cnf ファイルが DATADIR に存在しない場合、mysqld_safeBASEDIRMYSQL_HOME をセットします。

MySQL 5.6 では、DATADIRmy.cnf の場所として使用することは非推奨です。

一般的に、DATADIR はバイナリインストールでは /usr/local/mysql/data、ソースインストールでは /usr/local/var です。これは構成時に指定されたデータディレクトリの場所であって、mysqld が起動したとき --datadir オプションで指定されるものではないということに注意してください。実行時に --datadir を使用しても、サーバーがオプションファイルを探す際に何の影響ももたらしません。これはサーバーがオプションを処理する前にオプションファイルを探すからです。

MySQL は、前述の順序でオプションファイルを検索し、存在するものをすべて読み取ります。使用したいオプションファイルが存在しない場合は、プレーンテキストエディタで作成します。

所定のオプションが複数ある場合は、最後のインスタンスが優先されます。1 つ例外があります。mysqld では、オプションファイルで指定されたユーザーがコマンド行でオーバーライドされるのを防ぐため、安全対策として --user オプションの最初のインスタンスが使用されます。

注記

Unix プラットフォームでは、MySQL はだれでも書き込める構成ファイルを無視します。これはセキュリティー対策として意図的なものです。

MySQL プログラムを実行する際にコマンド行で指定できるすべての長いオプションは、オプションファイルでも指定できます。プログラムに対して使用可能なオプションのリストを取得するには、--help オプションを使用してそのプログラムを実行します。

オプションファイルでオプションを指定する構文は、コマンド行構文と同様です (セクション4.2.4「コマンド行でのオプションの使用」を参照してください)。ただしオプションファイルでは、先頭の 2 つのダッシュはオプション名から省略し、1 行で 1 つのオプションのみを指定します。たとえば、コマンド行での --quick および --host=localhost は、オプションファイルでは独立した行にある quick および host=localhost として指定するようにしてください。--loose-opt_name 形式のオプションをオプションファイルで指定するには、loose-opt_name として作成します。

オプションファイルの空の行は無視されます。空でない行は次のいずれかの形式を取ることができます。

  • #comment, ;comment

    # または ; で始まるコメント行。# を使用するコメントは、行の途中で開始することもできます。

  • [group]

    group はオプションを設定するプログラムまたはグループの名前です。グループ行のあと、すべてのオプション設定行は、オプションファイルが終了するか、または別のグループ行が指定されるまで、名前を指定したグループに適用されます。オプショングループ名では、大文字と小文字は区別されません。

  • opt_name

    これは、コマンド行の --opt_name と同等です。

  • opt_name=value

    これは、コマンド行の --opt_name=value と同等です。オプションファイルでは、= 文字の周囲にスペースを置くことができます。これはコマンド行ではできません。オプションで、値を一重引用符または二重引用符で囲むことができます。これは、値が # コメント文字を含む場合に便利です。

先頭および末尾のスペースは、自動的にオプション名および値から削除されます。

エスケープシーケンス \b\t\n\r\\、および \s をオプション値で使用して、バックスペース、タブ、改行、復帰改行、バックスラッシュ、およびスペース文字を表すことができます。オプションファイルでのエスケープのルール:

  • バックスラッシュに有効なエスケープシーケンス文字が続く場合、そのシーケンスはシーケンスが表す文字に変換されます。たとえば、\s はスペースに変換されます。

  • バックスラッシュに有効なエスケープシーケンス文字が続かない場合は、変更されません。たとえば、\S はそのままです。

前述のルールは、バックスラッシュそのものは \\ で指定できることを意味します。または、有効なエスケープシーケンス文字が続かなければ \ で指定できます。

オプションファイルにおけるエスケープシーケンスのルールは、SQL ステートメントにおける文字列リテラルのエスケープシーケンスのルールとは若干異なります。後者の場合は、x が有効なエスケープシーケンス文字ではない場合、\x\x ではなく x になります。セクション9.1.1「文字列リテラル」を参照してください。

オプションファイル値のエスケープのルールは、\ をパス名区切り文字として使用する Windows パス名に特に関係します。Windows パス名の区切り文字は、エスケープシーケンス文字が続く場合は \\ と記述する必要があります。そうでない場合は \\ または \ と記述できます。または、Windows パス名に / を使用することもでき、\ として扱われます。オプションファイルでベースディレクトリ C:\Program Files\MySQL\MySQL Server 5.6 を指定するとします。これはいくつかの方法で実行できます。例:

basedir="C:\Program Files\MySQL\MySQL Server 5.6"
basedir="C:\\Program Files\\MySQL\\MySQL Server 5.6"
basedir="C:/Program Files/MySQL/MySQL Server 5.6"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s5.6

オプショングループ名がプログラム名と同じである場合、グループ内のオプションは特にそのプログラムに適用されます。たとえば、[mysqld] グループおよび [mysql] グループは、それぞれ mysqld サーバーおよび mysql クライアントプログラムに適用されます。

[client] オプショングループは、すべてのクライアントプログラムによって読み取られます (しかし、mysqld には読み取られません)。このため、すべてのクライアントに適用されるオプションを指定できます。たとえば、[client] は、サーバーへの接続に使用するパスワードを指定するために使用するのに最適なグループです。(ただし、ほかの人にパスワードを知られないように、オプションファイルは必ず自分にしか読み書きできないようにしてください。)使用するすべてのクライアントプログラムが [client] グループを認識しないかぎり、オプションに置かないようにしてください。そのオプションを理解しないプログラムを実行しようとすると、そのプログラムはエラーメッセージを表示してから終了します。

一般的なグローバルオプションファイルを次に示します。

[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
[mysqldump]
quick

前述のオプションファイルは、key_buffer_size 変数および max_allowed_packet 変数をセットする行に var_name=value 構文を使用します。

一般的なユーザーオプションファイルを次に示します。

[client]
# The following password will be sent to all standard MySQL clients
password="my_password"
[mysql]
no-auto-rehash
connect_timeout=2
[mysqlhotcopy]
interactive-timeout

MySQL の特定のリリースシリーズの mysqld サーバーのみに読み取らせるべきオプショングループを作成する場合は、[mysqld-5.5][mysqld-5.6]、などの名前のグループを使用することで実行できます。次のグループは、--new オプションが 5.6.x バージョン番号の MySQL サーバーのみに使用されるべきであることを示します。

[mysqld-5.6]
new

オプションファイルで、!include ディレクティブを使用してほかのオプションファイルをインクルードしたり、!includedir を使用して特定のディレクトリでオプションファイルを検索したりできます。たとえば、/home/mydir/myopt.cnf ファイルをインクルードするには、次のディレクティブを使用します。

!include /home/mydir/myopt.cnf

/home/mydir ディレクトリを検索してそこで見つかったオプションファイルを読み取るには、次のディレクティブを使用します。

!includedir /home/mydir

ディレクトリ内のオプションファイルが読み取られる順序は保証されません。

注記

現在、Unix オペレーティングシステムで !includedir ディレクティブを使用して検索およびインクルードされるファイルは、.cnf で終わるファイル名を持っていなくてはなりません。Windows においては、このディレクティブは .ini または .cnf 拡張子を持つファイルをチェックします。

インクルードされるオプションファイルの内容は、ほかのオプションファイルと同様に記述します。すなわち、オプションのグループを含み、それぞれの前にオプションが適用されるプログラムを示す [group] 行があるようにしてください。

インクルードされるファイルの処理中、現在のプログラムが検索するグループ内のオプションのみが使用されます。その他のグループは無視されます。my.cnf ファイルに次の行が含まれるとします。

!include /home/mydir/myopt.cnf

また、/home/mydir/myopt.cnf は次のようであるとします。

[mysqladmin]
force
[mysqld]
key_buffer_size=16M

my.cnfmysqld によって処理される場合、/home/mydir/myopt.cnf 内の [mysqld] グループのみが使用されます。このファイルが mysqladmin によって処理される場合、[mysqladmin] グループのみが使用されます。このファイルがその他のプログラムによって処理される場合、/home/mydir/myopt.cnf のオプションは使用されません。

!includedir ディレクティブは同様に処理されますが、指名されたディレクトリ内のすべてのオプションファイルが読み取られる点が異なります。

4.2.7 オプションファイルの処理に影響するコマンド行オプション

オプションファイルをサポートするほとんどの MySQL プログラムは、次のオプションを処理します。それらはオプションファイルの処理に影響するため、オプションファイルではなくコマンド行で指定する必要があります。これらのオプションはそれぞれ、正しく機能するためにはほかのオプションより前に指定する必要があります。ただし、次の例外があります。

ファイル名を指定する場合、~ シェルメタキャラクタは想定どおり解釈されない場合があるため、使用を避けるようにしてください。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysql クライアントは通常 [client] グループおよび [mysql] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysql[client_other] グループおよび [mysql_other] グループも読み取ります。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにすることができます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合に、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

4.2.8 プログラム変数の設定へのオプションの使用

多くの MySQL プログラムには内部変数があり、実行時に SET ステートメントを使用して設定できます。セクション13.7.4「SET 構文」およびセクション5.1.5「システム変数の使用」を参照してください。

これらのプログラム変数のほとんどは、プログラムオプションの指定に適用されるのと同じ構文を使用して、サーバーの起動時にも設定できます。たとえば、mysql には通信バッファーの最大サイズを制御する max_allowed_packet 変数があります。mysql に対して max_allowed_packet 変数を 16M バイトの値にセットするには、次のコマンドのいずれかを使用してください。

shell> mysql --max_allowed_packet=16777216shell> mysql --max_allowed_packet=16M

最初のコマンドは値をバイトで指定します。2 番目は値を M バイトで指定します。数値を取る変数については、1024、10242 または 10243 の乗数を示すために、KM または G (大文字または小文字) のサフィクスで値を指定できます。(たとえば、max_allowed_packet を設定するために使用される場合、サフィクスは K バイト、M バイトまたは G バイトの単位を示します。)

オプションファイルでは、変数の設定は先頭のダッシュなしで指定されます。

[mysql]
max_allowed_packet=16777216

または:

[mysql]
max_allowed_packet=16M

お好みで、変数名内の下線をダッシュとして指定できます。次のオプショングループは同等です。どちらもサーバーのキーバッファーを 512M バイトに設定します。

[mysqld]
key_buffer_size=512M
[mysqld]
key-buffer-size=512M

変数は、すべて記述するか、またはあいまいでないプリフィクスとして指定できます。たとえば、max_allowed_packet 変数は mysql に対して --max_a として設定できますが、--max としては指定できません。後者はあいまいなためです。

shell> mysql --max=1000000mysql: ambiguous option '--max=1000000' (max_allowed_packet, max_join_size)

変数のプリフィクスを使用すると、プログラムに対して新しい変数が実装された場合に問題となることがあることに注意してください。現在あいまいでないプリフィクスが、将来あいまいになる可能性があります。

値乗数を指定するサフィクスは、サーバーの起動時に変数を設定するときに使用できますが、実行時に SET で値を設定するためには使用できません。一方、SET を使用すると、式を使用して変数の値を割り当てることができますが、サーバーの起動時に変数を設定するときには使用できません。たとえば、サーバーの起動時に次の 1 行目は有効ですが 2 行目は無効です。

shell> mysql --max_allowed_packet=16Mshell> mysql --max_allowed_packet=16*1024*1024

逆に、実行時に次の 2 行目は有効ですが 1 行目は無効です。

mysql> SET GLOBAL max_allowed_packet=16M;mysql> SET GLOBAL max_allowed_packet=16*1024*1024;

4.2.9 オプションのデフォルト、値を想定するオプション、および = 記号

慣例により、値を割り当てるオプションの長い形式は、次のように等号 (=) で記述されます。

shell> mysql --host=tonfisk --user=jon

値を必要とするオプション (つまり、デフォルトの値がないもの) では等号は必要ではないため、次も有効です。

shell> mysql --host tonfisk --user jon

どちらの場合も、mysql クライアントは tonfisk という名前のホストで稼働している MySQL サーバーに、ユーザー名 jon のアカウントを使用して接続しようとします。

この動作のため、値を想定するオプションに値を指定しない場合に、時として問題が生じることがあります。次の例を見てください。ユーザーがホスト tonfisk で稼働している MySQL サーバーに、ユーザー jon として接続します。

shell> mysql --host 85.224.35.45 --user jonWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.23 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SELECT CURRENT_USER();+----------------+
| CURRENT_USER() |
+----------------+
| jon@% |
+----------------+
1 row in set (0.00 sec)

これらのオプションの 1 つに対して必要な値を省略すると、次に示すようなエラーが生じます。

shell> mysql --host 85.224.35.45 --usermysql: option '--user' requires an argument

この場合、mysql は、コマンド行で --user オプションのあとに何もないため、値を見つけられませんでした。ただし、使用される最後のオプションではないオプションの値を省略すると、想定外の別のエラーが生じます。

shell> mysql --host --user jonERROR 2005 (HY000): Unknown MySQL server host '--user' (1)

mysql はコマンド行で --host に続く任意の文字列をホスト名と想定するため、--host--user--host=--user と解釈され、クライアントは --user という名前のホストで稼働している MySQL サーバーに接続しようとします。

デフォルト値を持つオプションは、値を割り当てる場合には必ず等号が必要です。そうしないとエラーになります。たとえば、MySQL サーバー --log-error オプションはデフォルト値 host_name.err を持ちます。ここで、host_name は MySQL が稼働しているホストの名前です。ホスト名が tonfisk であるコンピュータ上で MySQL を稼働しているとします。次のように mysqld_safe を呼び出した場合を考えます。

shell> mysqld_safe &[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>

サーバーのシャットダウン後、次のように再起動します。

shell> mysqld_safe --log-error &[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>

コマンド行で --log-error にはほかに何も続いておらず、独自のデフォルト値が供給されるため、結果は同じです。(& 文字は、オペレーティングシステムに対して MySQL をバックグランドで実行することを指示します。MySQL 自身はこれを無視します。)ここで、エラーを my-errors.err という名前のファイルに記録するとします。--log-error my-errors でサーバーを起動しようとする可能性がありますが、これは次に示すように、意図した効果を持ちません。

shell> mysqld_safe --log-error my-errors &[1] 31357
shell> 080111 22:53:31 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080111 22:53:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended
[1]+ Done ./mysqld_safe --log-error my-errors

サーバーは /usr/local/mysql/var/tonfisk.err をエラーログとして起動しようとしましたが、シャットダウンしました。このファイルの最後の数行を調べると理由がわかります。

shell> tail /usr/local/mysql/var/tonfisk.err080111 22:53:32 InnoDB: Started; log sequence number 0 46409/usr/local/mysql/libexec/mysqld: Too many arguments (first extra is 'my-errors').
Use --verbose --help to get a list of available options080111 22:53:32 [ERROR] Aborting080111 22:53:32 InnoDB: Starting shutdown...
080111 22:53:34 InnoDB: Shutdown completed; log sequence number 0 46409
080111 22:53:34 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete
080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended

--log-error オプションはデフォルト値を供給するため、次に示すように、別の値を割り当てるには等号を使用する必要があります。

shell> mysqld_safe --log-error=my-errors &[1] 31437
shell> 080111 22:54:15 mysqld_safe Logging to '/usr/local/mysql/var/my-errors.err'.
080111 22:54:15 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>

今度はサーバーは正常に起動し、エラーをファイル /usr/local/mysql/var/my-errors.err にロギングしています。

オプションファイルでオプション値を指定する場合も、同様の問題が生じる可能性があります。たとえば、次の内容の my.cnf ファイルを考えます。

[mysql]
host
user

mysql クライアントがこのファイルを読み取ると、これらのエントリは --host--user または --host=--user と解釈され、次に示すような結果になります。

shell> mysqlERROR 2005 (HY000): Unknown MySQL server host '--user' (1)

ただし、オプションファイルでは等号は想定されません。my.cnf ファイルが次に示すようになっているとします。

[mysql]
user jon

この場合、mysql を起動しようとすると別のエラーになります。

shell> mysqlmysql: unknown option '--user jon'

host=tonfisk ではなく host tonfisk とオプションファイルに記述した場合も同様のエラーが生じます。代わりに、等号を使用しなくてはなりません。

[mysql]
user=jon

これでログインが成功します。

shell> mysqlWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.23 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SELECT USER();+---------------+
| USER() |
+---------------+
| jon@localhost |
+---------------+
1 row in set (0.00 sec)

これはコマンド行での動作と同じではありません。コマンド行では等号は必要ではありません。

shell> mysql --user jon --host tonfiskWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.23 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SELECT USER();+---------------+
| USER() |
+---------------+
| jon@tonfisk |
+---------------+
1 row in set (0.00 sec)

MySQL 5.6 では、オプションファイルに、値を必要とするオプションを値なしで指定すると、サーバーがエラーで中止します。my.cnf に次の内容が含まれるとします。

[mysqld]
log_error
relay_log
relay_log_index

これは、次に示すようにサーバーが起動に失敗します。

shell> mysqld_safe &090514 09:48:39 mysqld_safe Logging to '/home/jon/bin/mysql/var/tonfisk.err'.
090514 09:48:39 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var
090514 09:48:39 mysqld_safe mysqld from pid file /home/jon/bin/mysql/var/tonfisk.pid ended

--log-error オプションは引数を必要としません。しかし、エラーログ (指定された値がないため、デフォルトの datadir/hostname.err になります) に示されるように、--relay-log オプションには必要です。

shell> tail -n 3 ../var/tonfisk.err090514 09:48:39 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var
090514 9:48:39 [ERROR] /home/jon/bin/mysql/libexec/mysqld: option '--relay-log' requires an argument
090514 9:48:39 [ERROR] Aborting

これは以前の動作からは変更されています。以前は、サーバーは my.cnf ファイルの最後の 2 行を --relay-log=relay_log_index と解釈し、relay_log_index をベース名としてリレーログファイルを作成しました。(Bug #25192)

4.2.10 環境変数の設定

環境変数は、コマンドプロセッサの現在の起動に影響するようにコマンドプロンプトで設定したり、将来の起動に影響するように永続的に設定したりできます。変数を永続的に設定するには、起動ファイルで設定するか、またはこのためにシステムが提供するインタフェースを使用して設定できます。具体的な詳細は、コマンドインタプリタのドキュメントを参照してください。セクション2.12「環境変数」には、MySQL プログラムの動作に影響するすべての環境変数のリストがあります。

環境変数の値を指定するには、コマンドプロセッサに適した構文を使用します。たとえば Windows では、USER 変数を設定して MySQL アカウント名を指定できます。そうするには、次の構文を使用します。

SET USER=your_name

Unix での構文はシェルに依存します。MYSQL_TCP_PORT 変数を使用して TCP/IP ポート番号を指定するとします。(shkshbashzsh、などの) 典型的な構文は次のとおりです。

MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT

最初のコマンドが変数を設定し、その値が MySQL およびほかのプロセスにアクセス可能になるように、export コマンドがシェル環境に変数をエクスポートします。

csh および tcsh については、シェル変数を環境で使用可能にするために setenv を使用してください。

setenv MYSQL_TCP_PORT 3306

環境変数を設定するコマンドは、コマンドプロンプトで実行してただちに有効にできますが、その設定はログアウトするまでしか持続しません。ログインするたびに設定を有効にするには、システムが提供するインタフェースを使用するか、コマンドインタプリタが、起動時に毎回読み取る起動ファイルに適切なコマンドを配置します。

Windows では、システム コントロール パネル (詳細設定の下) で環境変数を設定できます。

Unix では、通常のシェル起動ファイルは bash では .bashrc または .bash_profile、または tcsh では .tcshrc です。

MySQL プログラムが /usr/local/mysql/bin にインストールされ、これらのプログラムを呼び出しやすくしたいとします。そのためには、PATH 環境変数の値をそのディレクトリを含むように設定します。たとえば、シェルが bash の場合、.bashrc ファイルに次の行を追加します。

PATH=${PATH}:/usr/local/mysql/bin

bash はログインシェルと非ログインシェルで異なる起動ファイルを使用するため、ログインシェルに対しては設定を .bashrc、非ログインシェルに対しては .bash_profile に追加して、いずれの場合にも確実に PATH が設定されるようにするとよいでしょう。

シェルが tcsh の場合、.tcshrc ファイルに次の行を追加します。

setenv PATH ${PATH}:/usr/local/mysql/bin

ホームディレクトリに適切な起動ファイルが存在しない場合、テキストエディタで作成します。

PATH 設定を変更したら、設定が反映されるように、Windows の場合は新しいコンソールウィンドウを開き、Unix の場合はログインしなおします。

4.3 MySQL サーバーとサーバー起動プログラム

このセクションでは、MySQL サーバー mysqld、およびサーバーを起動するために使用されるいくつかのプログラムについて説明します。

4.3.1 mysqld — MySQL サーバー

mysqld は、MySQL サーバーとも呼ばれ、MySQL インストールでのほとんどの作業を実行するメインプログラムです。MySQL サーバーは、データベースおよびテーブルを含む MySQL データディレクトリへのアクセスを管理します。データディレクトリは、ログファイルおよびステータスファイルなど、その他の情報のデフォルトの場所でもあります。

MySQL サーバーが起動するとき、クライアントプログラムからのネットワーク接続を待機し、それらのクライアントに代わってデータベースへのアクセスを管理します。

mysqld プログラムには、起動時に指定できる多くのオプションがあります。すべてのオプションをリストするには、次のコマンドを実行します。

shell> mysqld --verbose --help

MySQL サーバーには、稼働時の動作に影響する一連のシステム変数もあります。システム変数はサーバーの起動時に設定でき、多くは実行時に変更して動的なサーバー再構成に影響を与えることができます。MySQL サーバーには、動作に関する情報を提供する一連のステータス変数もあります。これらのステータス変数をモニターして、実行時のパフォーマンス特性にアクセスできます。

MySQL サーバーのコマンドオプション、システム変数、およびステータス変数の詳細な説明は、セクション5.1「MySQL Server」を参照してください。MySQL のインストールおよび初期構成のセットアップについては、第2章「MySQL のインストールと更新を参照してください。

4.3.2 mysqld_safe — MySQL サーバー起動スクリプト

mysqld_safe は、Unix で mysqld サーバーを起動するための推奨される方法です。mysqld_safe は、エラー発生時の再起動やランタイム情報のエラーログファイルへのロギングなど、いくつかの安全機能を追加します。エラーのロギングについては、このセクションで後ほど説明します。

mysqld_safe は、mysqld という名前の実行可能ファイルを起動しようとします。デフォルトの動作をオーバーライドして、起動するサーバーの名前を明示的に指定するには、mysqld_safe--mysqld オプションまたは --mysqld-version オプションを指定します。--ledir オプションを使用して、mysqld_safe がサーバーを検索するディレクトリを指定することもできます。

mysqld_safe のオプションの多くは、mysqld のオプションと同じです。セクション5.1.3「サーバーコマンドオプション」を参照してください。

mysqld_safe が理解できないオプションは、コマンド行で指定された場合は mysqld に渡されますが、オプションファイルの [mysqld_safe] グループに指定された場合は無視されます。セクション4.2.6「オプションファイルの使用」を参照してください。

mysqld_safe は、オプションファイルの [mysqld][server][mysqld_safe] の各セクションからすべてのオプションを読み取ります。たとえば、[mysqld] セクションを次のように指定すると、mysqld_safe--log-error オプションを検出して使用します。

[mysqld]
log-error=error.log

下位互換性のため、mysqld_safe[safe_mysqld] セクションも読み取りますが、[safe_mysqld] セクションを [mysqld_safe] セクションに名前変更することが推奨されます。

mysqld_safe は次のオプションをサポートします。また、オプションファイルを読み取り、セクション4.2.7「オプションファイルの処理に影響するコマンド行オプション」に説明されている、それらを処理するためのオプションもサポートします。

表 4.1 mysqld_safe のオプション

オプション名説明
--basedirMySQL インストールディレクトリへのパス
--core-file-sizemysqld が作成できるべきコアファイルのサイズ
--datadirデータディレクトリへのパス
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--helpヘルプメッセージを表示して終了
--ledirサーバーが置かれているディレクトリへのパス
--log-error指定されたファイルにエラーログを書き込み
--malloc-libmysqld で使用する代替 malloc ライブラリ
--mysqld起動するサーバープログラム名 (ledir ディレクトリの)
--mysqld-versionサーバープログラム名のサフィクス
--niceサーバーのスケジュール設定の優先順位を設定するために nice プログラムを使用
--no-defaultsオプションファイルを読み取らない
--open-files-limitmysqld が開くことができるファイル数
--pid-fileプロセス ID ファイルのパス名
--plugin-dirプラグインがインストールされているディレクトリ
--portTCP/IP 接続を待機するポート番号
--skip-kill-mysqld迷子の mysqld プロセスの kill を試行しない
--skip-syslogsyslog にエラーメッセージを書き込まず、エラーログファイルを使用
--socketUnix ソケット接続を待機するソケットファイル
--syslogsyslog にエラーメッセージを書き込み
--syslog-tagsyslog に書き込まれるメッセージのタグサフィクス
--timezoneTZ タイムゾーン環境変数を指定された値に設定
--usermysqld を、名前が user_name または数値のユーザー ID が user_id であるユーザーとして実行

  • --help

    ヘルプメッセージを表示して終了します。

  • --basedir=path

    MySQL インストールディレクトリへのパス。

  • --core-file-size=size

    mysqld で作成できるべきコアファイルのサイズ。このオプション値は ulimit -c に渡されます。

  • --datadir=path

    データディレクトリへのパス。

  • --defaults-extra-file=path

    通常のオプションファイルに加えて読み取られるオプションファイルの名前。これを使用する場合は、コマンド行の最初のオプションでなければなりません。ファイルが存在しない場合やその他の理由でアクセスできない場合は、サーバーはエラーで終了します。

  • --defaults-file=file_name

    通常のオプションファイルの代わりに読み取られるオプションファイルの名前。これを使用する場合は、コマンド行の最初のオプションでなければなりません。

  • --ledir=path

    mysqld_safe がサーバーを検出できない場合、このオプションを使用してサーバーが置かれているディレクトリのパス名を示します。

  • --log-error=file_name

    指定されたファイルにエラーログを書き込みます。セクション5.2.2「エラーログ」 を参照してください。

  • --malloc-lib=[lib_name]

    システムの malloc() ライブラリの代わりに、メモリー割り当てに使用されるライブラリの名前。パス名を指定することによって任意のライブラリを使用できますが、MySQL 5.6 では Linux 向けのバイナリの MySQL 配布に同梱の tcmalloc ライブラリを使用できるようにするためのショートカット形式があります。特定の構成ではショートカット形式が機能しない可能性があります。その場合は代わりにパス名を指定するようにしてください。

    --malloc-lib オプションは、mysqld が起動するときに、ダイナミックリンクに影響を与え、ローダーがメモリー割り当てライブラリを検出できるように、LD_PRELOAD 環境値を変更します。

    • このオプションが指定されない場合、または値なしで指定された場合 (--malloc-lib=)、LD_PRELOAD は変更されず、tcmalloc を使用する試みは行われません。

    • オプションが、--malloc-lib=tcmalloc と指定された場合、mysqld_safetcmalloc ライブラリを /usr/lib から検索し、次に MySQL pkglibdir の場所 (たとえば、/usr/local/mysql/lib または適切なもの) から検索します。tmalloc が検出された場合は、そのパス名が LD_PRELOAD 値の先頭に追加されて mysqld に渡されます。tcmalloc が見つからない場合は、mysqld_safe はエラーで中止されます。

    • オプションが --malloc-lib=/path/to/some/library と指定された場合、そのフルパスが LD_PRELOAD 値の先頭に追加されます。そのフルパスが、存在しないかまたは読み取り不能なファイルを指している場合は、mysqld_safe はエラーで中止されます。

    • mysqld_safe がパス名を LD_PRELOAD に追加する場合は、その変数がすでに持っている、既存の値の先頭にパスを追加します。

    Linux ユーザーは、次の行を my.cnf ファイルに追加することにより、バイナリパッケージに含まれる libtcmalloc_minimal.so を使用できます。

    [mysqld_safe]
    malloc-lib=tcmalloc

    任意のプラットフォームで tcmalloc パッケージを /usr/lib にインストールしたユーザーにも、これらの行は十分です。特定の tcmalloc ライブラリを使用するには、そのフルパス名を指定します。例:

    [mysqld_safe]
    malloc-lib=/opt/lib/libtcmalloc_minimal.so
  • --mysqld=prog_name

    ledir ディレクトリにある、起動するサーバープログラムの名前。MySQL のバイナリ配布を使用するが、バイナリ配布以外のデータディレクトリがある場合には、このオプションが必要です。mysqld_safe がサーバーを検出できない場合は、--ledir オプションを使用してサーバーのあるディレクトリへのパス名を示します。

  • --mysqld-version=suffix

    このオプションは --mysqld オプションと類似していますが、サーバーのプログラム名のサフィクスだけを指定します。ベース名は mysqld であるとみなされます。たとえば、--mysqld-version=debug を使用すると、mysqld_safeledir ディレクトリの mysqld-debug プログラムを起動します。--mysqld-version の引数が空の場合、mysqld_safeledir ディレクトリの mysqld を使用します。

  • --nice=priority

    サーバーのスケジュール優先順位を任意の値に設定するには、nice プログラムを使用します。

  • --no-defaults

    オプションファイルを読み取りません。これを使用する場合は、コマンド行の最初のオプションでなければなりません。

  • --open-files-limit=count

    mysqld が開くことができるファイル数。オプション値は ulimit -n に渡されます。

    注記

    これが正しく機能するためには、mysqld_saferoot として起動する必要があります。

  • --pid-file=file_name

    プロセス ID ファイルのパス名。

  • --plugin-dir=path

    プラグインディレクトリのパス名。

  • --port=port_num

    サーバーが TCP/IP 接続を待機するときに使用するポート番号。サーバーが root システムユーザーで開始されている場合を除き、ポート番号は 1024 以上にする必要があります。

  • --skip-kill-mysqld

    起動時に、未処理の mysqld プロセスの強制終了を試行しません。このオプションは、Linux のみで機能します。

  • --socket=path

    サーバーがローカル接続を待機するときに使用する Unix ソケットファイル。

  • --syslog, --skip-syslog

    --syslog は、logger プログラムをサポートするシステムで、エラーメッセージが syslog に送信されるようにします。--skip-syslog は、syslog の使用を抑制し、メッセージはエラーログファイルに書き込まれます。

    syslog が使用される場合、daemon.err syslog 機能/重要度がすべてのログメッセージで使用されます。

  • --syslog-tag=tag

    syslog へのロギングで、mysqld_safe および mysqld からのメッセージはそれぞれ mysqld_safe および mysqld 識別子を付けて書き込まれます。識別子のサフィクスを指定するには、--syslog-tag=tag を使用します。これにより、識別子は mysqld_safe-tag および mysqld-tag に変更されます。

  • --timezone=timezone

    TZ タイムゾーン環境変数を、指定されたオプション値に設定します。正当なタイムゾーン指定形式は、オペレーティングシステムのドキュメントを参照してください。

  • --user={user_name|user_id}

    mysqld サーバーを、名前 user_name または数字ユーザー ID user_id を持つユーザーとして実行します。(このコンテキストでのユーザーは、システムログインアカウントであり、付与テーブルにリストされている MySQL ユーザーではありません。)

mysqld_safe--defaults-file オプションまたは --defaults-extra-file オプションで起動してオプションファイルを指定する場合、そのオプションはコマンド行で指定されるうちの最初のものでなければなりません。そうでない場合は、オプションファイルは使用されません。たとえば、次のコマンドは指定されたオプションファイルを使用しません。

mysql> mysqld_safe --port=port_num --defaults-file=file_name

代わりに、次のコマンドを使用します。

mysql> mysqld_safe --defaults-file=file_name --port=port_num

MySQL のソースまたはバイナリ配布は通常、サーバーを若干異なる場所にインストールしますが、mysqld_safe スクリプトは、どちらからインストールしたサーバーでも正常に立ち上げることができるように作成されています。(セクション2.1.5「インストールのレイアウト」を参照してください。) mysqld_safe は、次の条件のいずれかが満たされていることを想定しています。

  • サーバーとデータベースは作業ディレクトリ (mysqld_safe が呼び出されたディレクトリ) から相対的に検索できること。バイナリ配布の場合、mysqld_safe は作業ディレクトリの下の bin ディレクトリおよび data ディレクトリを検索します。ソース配布の場合は、libexec ディレクトリおよび var ディレクトリを検索します。mysqld_safe を MySQL インストールディレクトリ (バイナリ配布の場合は /usr/local/mysql) から起動した場合には、この条件が満たされるはずです。

  • サーバーとデータベースが作業ディレクトリから相対的に検出できない場合は、mysqld_safe は絶対パス名での検索を試みます。通常の場所は /usr/local/libexec および /usr/local/var です。実際の場所は、配布のビルド時に構成される値から決定されます。構成時に指定された場所に MySQL がインストールされていれば、これは正しいはずです。

mysqld_safe はサーバーおよびデータベースを作業ディレクトリから相対的に検索しようとするため、mysqld_safe を MySQL インストールディレクトリから起動するかぎり、MySQL のバイナリ配布は任意の場所にインストールできます。

shell> cd mysql_installation_directoryshell> bin/mysqld_safe &

mysqld_safe を MySQL インストールディレクトリから呼び出しても失敗する場合は、--ledir オプションおよび --datadir オプションを指定して、システムのサーバーとデータベースがあるディレクトリを指定します。

MySQL 5.6.5 以降では、mysqld_safesleep および date システムユーティリティーを使用して、今回の起動までに何回起動しようとしたかを判断します。これらが存在し、5 回より多い場合は、再起動するまでに強制的に 1 秒間待機させられます。これは、連続して失敗する場合に過度に CPU を使用することを防ぐためのものです。(Bug #11761530、Bug #54035)

mysqld_safe を使用して mysqld を起動する場合、mysqld_safe は自身と mysqld からのエラー (および通知) メッセージが同じ出力先に送信されるよう手配します。

これらのメッセージの出力先を制御するための mysqld_safe オプションがいくつかあります。

  • --log-error=file_name: エラーメッセージを指定されたエラーファイルに書き込みます。

  • --syslog: logger プログラムをサポートするシステムで、syslog にエラーメッセージを書き込みます。

  • --skip-syslog: エラーメッセージを syslog に書き込みません。メッセージは、デフォルトのエラーログファイル (データディレクトリの host_name.err)、または --log-error オプションが指定された場合は、指定されたファイルに書き込まれます。

これらのオプションが指定されていない場合は、デフォルトは --skip-syslog です。

--log-error--syslog が両方指定された場合は、警告が発行され --log-error が優先されます。

mysqld_safe がメッセージを書き込む場合、通知はロギングの出力先 (syslog またはエラーログファイル) および stdout に送られます。エラーはロギングの出力先と stderr に送られます。

4.3.3 mysql.server — MySQL サーバー起動スクリプト

Unix の MySQL 配布には、mysql.server というスクリプトがあります。System V スタイルの実行ディレクトリを使用してシステムサービスの起動および停止を行う、Linux および Solaris などのシステムで使用できます。MySQL の OS X Startup Item でも使用されます。

mysql.server は、MySQL インストールディレクトリの support-files または MySQL のソース配布にあります。

Linux の RPM パッケージ (MySQL-server-VERSION.rpm) を使用する場合は、mysql.server スクリプトは /etc/init.d ディレクトリに mysql という名前でインストールされます。それを手動でインストールする必要はありません。Linux RPM パッケージに関する詳細は、セクション2.5.5「RPM パッケージを使用して MySQL を Linux にインストールする」を参照してください。

ベンダーによっては、起動スクリプトを mysqld のような別名でインストールする RPM パッケージを提供している場合もあります。

MySQL をソース配布から、あるいは mysql.server を自動的にインストールしないバイナリの配布形式を使用してインストールする場合、それを手動でインストールできます。手順はセクション2.10.1.2「MySQL を自動的に起動および停止する」を参照してください。

mysql.server は、オプションファイルの [mysql.server] セクションおよび [mysqld] セクションからオプションを読み取ります。下位互換性のため、[mysql_server] セクションも読み取りますが、MySQL 5.6 を使用する場合は、このようなセクションは [mysql.server] に名前変更するようにしてください。

mysql.server は次のオプションをサポートします。

  • --basedir=path

    MySQL インストールディレクトリへのパス。

  • --datadir=path

    MySQL データディレクトリへのパス。

  • --pid-file=file_name

    サーバーがプロセス ID を書き込むべきファイルのパス名。

  • --service-startup-timeout=seconds

    サーバーの起動を確認するために待機する秒数。サーバーがこの時間内に起動しない場合、mysql.server はエラーで終了します。デフォルト値は 900 です。0 の値は、起動をまったく待機しないことを意味します。負の値はいつまでも (タイムアウトなしで) 待機することを意味します。

  • --use-mysqld_safe

    mysqld_safe を使用してサーバーを起動します。これはデフォルトです。

  • --user=user_name

    mysqld を実行する際に使用するログインユーザー名。

4.3.4 mysqld_multi — 複数の MySQL サーバーの管理

mysqld_multi は、Unix ソケットファイルや TCP/IP ポートでの接続を待機する複数の mysqld プロセスを管理するためのものです。サーバーの起動または停止、現在のステータスのレポートを実行できます。

mysqld_multi[mysqldN] という名前のグループを my.cnf (または --defaults-file オプションで指定されたファイル) から検索します。N は任意の正の整数です。この数字は、次の説明ではオプショングループ番号、または GNR といいます。グループ番号は、それぞれのオプショングループを識別し、起動、停止、またはステータスレポート取得の対象となるサーバーを指定するために、mysqld_multi の引数として使用されます。これらのグループにリストされるオプションは、mysqld を起動するために [mysqld] グループで使用するものと同じです。(たとえばセクション2.10.1.2「MySQL を自動的に起動および停止する」などを参照してください。)ただし、複数のサーバーを使用する場合は、Unix ソケットファイルや TCP/IP ポート番号などに関してそれぞれが独自のオプション値を使用する必要があります。複数サーバーの環境で、どのオプションを一意とする必要があるのかについては、セクション5.3「1 つのマシン上での複数の MySQL インスタンスの実行」を参照してください。

mysqld_multi を呼び出すには、次の構文を使用します。

shell> mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

startstopreload (停止して再起動)、および report は、実行する操作を示します (reload は MySQL 5.6.3 で使用可能です。)オプション名に続く GNR リストに従って、指定した操作を単一のサーバーまたは複数のサーバーで実行できます。リストがない場合は、mysqld_multi はオプションファイル内のすべてのサーバーに対して操作を実行します。

GNR 値は、オプショングループ番号またはグループ番号の範囲を表します。値は、オプションファイル内のグループ名の最後の数字とします。たとえば、[mysqld17] という名前のグループの GNR17 です。番号の範囲を指定するには、最初と最後の番号をダッシュで区切ります。GNR10-13 は、[mysqld10] から [mysqld13] のグループを表します。コマンド行で、複数のグループまたはグループの範囲を、カンマで区切って指定できます。GNR リストには空白文字 (スペースまたはタブ) を使用してはいけません。空白文字からあとにあるものはすべて無視されます。

次のコマンドは [mysqld17] というオプショングループを使用して単一のサーバーを起動します。

shell> mysqld_multi start 17

次のコマンドは、[mysqld8] および [mysqld10] から [mysqld13] までのオプショングループを使用して複数のサーバーを停止します。

shell> mysqld_multi stop 8,10-13

オプションファイルをセットアップする方法の例として、次のコマンドを使用します。

shell> mysqld_multi --example

mysqld_multi は次のようにオプションファイルを検索します。

  • --no-defaults では、オプションファイルは読み取りません。

  • --defaults-file=file_name では、指定されたファイルのみを読み取ります。

  • それ以外の場合は、--defaults-extra-file=file_name オプションが指定された場合はそこで指定されたファイルを含めて、標準の場所のリストにあるオプションファイルが読み取られます。(オプションが複数回指定された場合は、最後の値が使用されます。)

読み取られるオプションファイルでは、[mysqld_multi] および [mysqldN] オプショングループが検索されます。[mysqld_multi] グループは、mysqld_multi 自身へのオプションに使用できます。[mysqldN] グループは、mysqld の特定のインスタンスに渡されるオプションに使用できます。

[mysqld] グループまたは [mysqld_safe] グループは、mysqld または mysqld_safe のすべてのインスタンスによって読み取られる共通オプションに使用できます。--defaults-file=file_name オプションを指定して、そのインスタンスに異なる構成ファイルを使用できます。この場合、そのファイルの[mysqld] または [mysqld_safe] グループがそのインスタンスに使用されます。

mysqld_multi は次のオプションをサポートします。

  • --help

    ヘルプメッセージを表示して終了します。

  • --example

    サンプルのオプションファイルを表示します。

  • --log=file_name

    ログファイルの名前を指定します。ファイルが存在する場合は、ログ出力はそこに追加されます。

  • --mysqladmin=prog_name

    サーバーの停止に使用する mysqladmin バイナリ。

  • --mysqld=prog_name

    使用する mysqld バイナリ。このオプションの値として mysqld_safe を指定できます。mysqld_safe を使用してサーバーを起動する場合は、対応する [mysqldN] オプショングループに mysqld オプションまたは ledir オプションを含めることができます。これらのオプションは、mysqld_safe が起動するべきサーバーの名前と、サーバーがあるディレクトリのパス名を示します。(これらのオプションに関する説明は、セクション4.3.2「mysqld_safe — MySQL サーバー起動スクリプト」を参照してください。)例:

    [mysqld38]
    mysqld = mysqld-debug
    ledir = /opt/local/mysql/libexec
  • --no-log

    ログファイルではなく、stdout にログを出力します。デフォルトでは、出力はログファイルに送られます。

  • --password=password

    mysqladmin を呼び出すときに使う MySQL アカウントのパスワード。ほかの MySQL プログラムとは異なり、このオプションではパスワード値はオプションではありません。

  • --silent

    サイレントモード。警告を無効にします。

  • --tcp-ip

    Unix ソケットファイルではなく TCP/IP ポートを介して各 MySQL サーバーに接続します。(ソケットファイルがない場合でもサーバーは稼働している可能性がありますが、TCP/IP ポートからのみアクセスできます。)接続はデフォルトでは Unix ソケットファイルを使用して行われます。このオプションは stop 操作と report 操作に影響します。

  • --user=user_name

    mysqladmin を呼び出すときに使う MySQL アカウントのユーザー名。

  • --verbose

    より詳細になります。

  • --version

    バージョン情報を表示して終了します。

mysqld_multi に関する注意:

  • もっとも重要: mysqld_multi を使用する前に、mysqld サーバーに渡されるオプションの意味と、なぜ独立した mysqld プロセスが必要なのかを確実に理解してください。同じデータディレクトリで複数の mysqld サーバーを使用することの危険性に注意してください。特別な意図がないかぎり、独立のデータディレクトリを使用してください。スレッドを使用するシステムでは、同じデータディレクトリで複数のサーバーを起動してもパフォーマンスは改善されませんセクション5.3「1 つのマシン上での複数の MySQL インスタンスの実行」 を参照してください。

  • 重要

    各サーバーのデータディレクトリが、その特定の mysqld を開始した Unix アカウントから完全にアクセス可能であることを確認してください。特別な意図がないかぎり、Unix root アカウントをこれに使用しないでくださいセクション6.1.5「MySQL を通常ユーザーとして実行する方法」を参照してください。

  • mysqld サーバーを (mysqladmin プログラムで) 停止するのに使用する MySQL アカウントが、各サーバーに対して同じユーザー名とパスワードを持つことを確認してください。また、そのアカウントには SHUTDOWN 権限があることも確かめてください。管理対象のサーバーの管理アカウントのユーザー名またはパスワードが異なる場合は、各サーバーに同じユーザー名とパスワードを持つアカウントを作成するとよいでしょう。たとえば、次のコマンドをそれぞれのサーバーで実行することにより、共通の multi_admin アカウントをセットアップできます。

    shell> mysql -u root -S /tmp/mysql.sock -pEnter password:
    mysql> GRANT SHUTDOWN ON *.* -> TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';

    セクション6.2「MySQL アクセス権限システム」を参照してください。これは、それぞれの mysqld サーバーで行う必要があります。それぞれに接続する場合、接続パラメータを適切に変更します。アカウント名のホスト名部分は、 mysqld_multi を実行するホストから multi_admin として接続できるものでなければなりません。

  • Unix ソケットファイルと TCP/IP ポート番号は、すべての mysqld で異なる必要があります。(または、ホストが複数のネットワークアドレスを持つ場合、--bind-address を使用して、異なるサーバーが異なるインタフェースを待機するようにできます。)

  • mysqld_safe を使用して mysqld を起動している場合 (たとえば --mysqld=mysqld_safe)、--pid-file オプションは非常に重要です。すべての mysqld が独自のプロセス ID ファイルを持っているべきです。mysqld ではなく、mysqld_safe を使用することの利点は、mysqld_safemysqld のプロセスをモニターして、kill -9 を使用したシグナル送信や、セグメンテーション違反などその他の原因でプロセスが終了した場合に、再起動するということです。mysqld_safe スクリプトでは、特定の場所から起動することが必要な場合があります。これは、mysqld_multi を実行する前に、特定のディレクトリに場所を変更しなければならない可能性があることを意味します。起動時に問題がある場合は、mysqld_safe スクリプトを調べてください。特に次の行をチェックします。

    ----------------------------------------------------------------
    MY_PWD=`pwd`
    # Check if we are starting this relative (for the binary release)
    if test -d $MY_PWD/data/mysql -a \ -f ./share/mysql/english/errmsg.sys -a \ -x ./bin/mysqld
    ----------------------------------------------------------------

    これらの行によって実行されるテストは成功するはずです。そうでないと問題が生じます。セクション4.3.2「mysqld_safe — MySQL サーバー起動スクリプト」を参照してください。

  • --user オプションを mysqld に対して使用する場合がありますが、そのためには mysqld_multi スクリプトを Unix のスーパーユーザー (root) として実行する必要があります。このオプションがオプションファイルにあるかどうかは問題ではなく、もしスーパーユーザーではない人が、mysqld プロセスを自分の Unix アカウントで起動すると、警告が出ます。

次の例は、mysqld_multi とともに使用するオプションファイルの設定方法を示します。mysqld プログラムが起動または終了する順序は、オプションファイルで指定する順序によります。グループ番号は、切れ目のないシーケンスの形式にする必要はありません。例では、最初と 5 番目の [mysqldN] グループは意図的に省略しています。これは、オプションファイルでギャップがあっても構わないことを示しています。これにより、柔軟性が高まります。

# This file should probably be in your home dir (~/.my.cnf)
# or /etc/my.cnf
# Version 2.1 by Jani Tolonen
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass
[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file = /usr/local/mysql/var2/hostname.pid2
datadir = /usr/local/mysql/var2
language = /usr/local/share/mysql/english
user = john
[mysqld3]
socket = /tmp/mysql.sock3
port = 3308
pid-file = /usr/local/mysql/var3/hostname.pid3
datadir = /usr/local/mysql/var3
language = /usr/local/share/mysql/swedish
user = monty
[mysqld4]
socket = /tmp/mysql.sock4
port = 3309
pid-file = /usr/local/mysql/var4/hostname.pid4
datadir = /usr/local/mysql/var4
language = /usr/local/share/mysql/estonia
user = tonu
[mysqld6]
socket = /tmp/mysql.sock6
port = 3311
pid-file = /usr/local/mysql/var6/hostname.pid6
datadir = /usr/local/mysql/var6
language = /usr/local/share/mysql/japanese
user = jani

セクション4.2.6「オプションファイルの使用」を参照してください。

4.4 MySQL インストール関連のプログラム

このセクションのプログラムは、MySQL のインストールまたはアップグレードに使用されます。

4.4.1 comp_err — MySQL エラーメッセージファイルのコンパイル

comp_err は、mysqld がさまざまなエラーコードに対して表示するエラーメッセージを判断するために使用する、errmsg.sys ファイルを作成します。comp_err は、通常 MySQL のビルド時に自動的に実行されます。MySQL ソース配布の sql/share/errmsg.txt にあるプレーンテキストファイルから errmsg.sys ファイルをコンパイルします。

comp_err は、mysqld_error.hmysqld_ername.h、および sql_state.h の各ヘッダーファイルも生成します。

エラーメッセージの定義方法の詳細は、「MySQL Internals Manual」を参照してください。

comp_err は次のように呼び出します。

shell> comp_err [options]

comp_err は次のオプションをサポートします。

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --charset=path, -C path

    文字セットディレクトリ。デフォルトは ../sql/share/charsets です。

  • --debug=debug_options, -# debug_options

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:O,file_name です。デフォルトは d:t:O,/tmp/comp_err.trace です。

  • --debug-info, -T

    プログラムの終了時に、デバッグ情報を出力します。

  • --header_file=file_name, -H file_name

    エラーヘッダーファイルの名前です。デフォルトは mysqld_error.h です。

  • --in_file=file_name, -F file_name

    入力ファイルの名前です。デフォルトは ../sql/share/errmsg.txt です。

  • --name_file=file_name, -N file_name

    エラー名ファイルの名前です。デフォルトは mysqld_ername.h です。

  • --out_dir=path, -D path

    出力ベースディレクトリの名前です。デフォルトは ../sql/share/ です。

  • --out_file=file_name, -O file_name

    出力ファイルの名前です。デフォルトは errmsg.sys です。

  • --statefile=file_name, -S file_name

    SQLSTATE ヘッダーファイルの名前です。デフォルトは sql_state.h です。

  • --version, -V

    バージョン情報を表示して終了します。

4.4.2 mysqlbug — バグレポートの生成

このプログラムは非推奨です。これは MySQL 5.6.19 以降で非推奨となり、MySQL 5.7 で削除されています。

通常バグをレポートする場合は、http://bugs.mysql.com/ にアクセスしてください。これはバグデータベースのアドレスです。このバグデータベースは一般に公開されているので、だれでも参照および検索することができます。システムにログインすると、新しいレポートを入力できます。

4.4.3 mysql_install_db — MySQL データディレクトリの初期化

mysql_install_db は MySQL データディレクトリを初期化し、システムテーブルを作成します (システムテーブルがない場合)。また、InnoDB テーブルの管理に必要な、システムのテーブルスペースおよび関係するデータ構造体も初期化します。MySQL 5.6.8 では、mysql_install_db は Perl スクリプトで、Perl がインストールされた任意のシステムで使用できます。5.6.8 より前ではシェルスクリプトで、Unix プラットフォームでのみ使用可能です。

MySQL 5.6.8 以降では、mysql_install_db は UNIX プラットフォーム上で、my.cnf という名前のデフォルトオプションファイルを基本インストールディレクトリに作成します。このファイルは my-default.cnf という名前の配布パッケージに含まれるテンプレートから作成されます。テンプレートは基本インストールディレクトリ内またはその配下から見つけることができます。mysqld_safe を使用して開始すると、サーバーはデフォルトで my.cnf ファイルを使用します。my.cnf がすでに存在する場合、mysql_install_db はそのファイルが使用中だと認識し、my-new.cnf という名前の新しいファイルを代わりに書き込みます。

1 つの例外を除き、デフォルトのオプションファイル内の設定はコメント化されて無効になっています。例外は、このファイルが sql_mode システム変数を NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES に変更することです。この設定により、トランザクションテーブルを変更する操作での不良データに対して警告でなくエラーを発生させるサーバー構成が提供されます。セクション5.1.7「サーバー SQL モード」を参照してください。

mysql_install_db を呼び出すには、次の構文を使用します。

shell> mysql_install_db [options]

MySQL サーバー mysqld があとで起動されるとき、データディレクトリにアクセスしなければならないため、mysqld の起動に使用するのと同じシステムアカウントから mysql_install_db を起動するか、または root として実行し、--user オプションを指定して mysqld を実行するユーザー名を指示します。mysql_install_db がインストールディレクトリまたはデータディレクトリの正しい場所を使用しない場合は、--basedir または --datadir などの、ほかのオプションを指定しなければならない場合があります。例:

shell> scripts/mysql_install_db --user=mysql \--basedir=/opt/mysql/mysql \--datadir=/opt/mysql/mysql/data
注記

mysql_install_dbInnoDBシステムテーブルスペース をセットアップしたあと、テーブルスペースの特性を変更するにはまったく新しいインスタンスをセットアップする必要があります。これには、システムテーブルスペース内の最初のファイル名および undo ログの数が含まれます。デフォルト値を使用しない場合は、mysql_install_db を実行する前に、innodb_data_file_path および innodb_log_file_size の各構成パラメータの設定が MySQL 構成ファイル内で適切な場所にあることを確認してください。また、 innodb_data_home_dir および innodb_log_group_home_dir などの、InnoDB ファイルの作成および場所に影響するその他のパラメータを、必要に応じて指定してください。

これらのオプションが構成ファイルにあるが、そのファイルが MySQL がデフォルトで読み取る場所にない場合は、mysql_install_db の実行時に --defaults-extra-file オプションを使用してファイルの場所を指定します。

注記

インストールを実行する際にカスタムの TMPDIR 環境変数を設定し、指定されたディレクトリにアクセスできない場合、mysql_install_db は失敗する場合があります。その場合は、TMPDIR の設定を取り消すか、または TMPDIR をシステムの一時ディレクトリ (通常 /tmp) を指すように設定します。

mysql_install_db は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysql_install_db] グループで指定できます。(mysqld に共通なオプションは、[mysqld] グループにも指定できます。)その他のオプションは mysqld に渡されます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.2 mysql_install_db オプション

オプション名説明導入非推奨
--basedirベースディレクトリへのパス
--builddirビルドディレクトリへのパス (ソースからのビルドで)
--cross-bootstrap内部使用
--datadirデータディレクトリへのパス
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--forceDNS が機能しない場合でも実行
--helpヘルプメッセージを表示して終了
--keep-my-cnf既存の my.cnf file を保持し、新規に作成しない5.6.205.6.20
--ldata--datadir のシノニム
--no-defaultsオプションファイルを読み取らない
--random-passwords管理アカウントにランダムパスワードを生成5.6.8
--rpm内部使用
--skip-name-resolve付与テーブルにホスト名ではなく IP アドレスを使用
--srcdir内部使用
--usermysqld を実行するシステムログインユーザー
--verbose冗長モード
--windows内部使用

  • --help

    ヘルプメッセージを表示して終了します。

  • --basedir=path

    MySQL インストールディレクトリへのパス。

  • --builddir=path

    --srcdir およびソースからのビルドとともに使用します。これは、ビルドされたファイルがあるディレクトリの場所にセットします。

  • --cross-bootstrap

    内部使用。このオプションは、あるホスト用のシステムテーブルを別のホストでビルドするために使用されます。

  • --datadir=path

    MySQL データディレクトリへのパス。MySQL 5.6.8 以降、mysql_install_db はオプション値に関してより厳密になりました。パスが存在しない場合は、パス名の最後のコンポーネントのみが作成されます。親ディレクトリはすでに存在する必要があります。存在しない場合はエラーが発生します。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --force

    DNS が機能しない場合でも mysql_install_db を実行します。通常ホスト名を使用して作成される付与テーブルエントリが、代わりに IP アドレスを使用します。

  • --keep-my-cnf

    mysql_install_db に対し、既存の my.cnf ファイルがあれば、新しいデフォルトの my.cnf ファイルを作成せずに既存のものを維持するように指示します。このオプションは MySQL 5.6.20 で追加されました。

  • --ldata=path

    --datadir のシノニム。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにすることができます。

  • --random-passwords

    Unix プラットフォームで、このオプションはよりセキュアな MySQL インストールを提供します。mysql_install_db--random-passwords で起動すると、通常の動作に加えて次のアクションを実行するようになります。

    • インストールプロセスはランダムなパスワードを作成して、それを初期 MySQL root アカウントに割り当て、これらのアカウントに対して有効期限切れパスワードフラグを設定します。

    • 初期のランダムな root パスワードは、HOME 環境変数によって指定されるディレクトリの .mysql_secret ファイルに書き込まれます。オペレーティングシステムによっては、sudo などのコマンドを使用するとHOME の値が root システムユーザーのホームディレクトリを参照するようになる場合があります。

      .mysql_secret がすでに存在する場合は、新しいパスワード情報はそれに追加されます。各パスワードエントリにはタイムスタンプが含まれるため、複数のインストール操作の場合に、それぞれに関連するパスワードを判断できます。

      .mysql_secret は、作成対象のシステムユーザーのみがアクセスできるように、モード 600 で作成されます。

    • 匿名ユーザー MySQL アカウントは作成されません。

    これらのアクションの結果、インストール後、サーバーを起動して .mysql_secret ファイルに書き込まれたパスワードを使用して root として接続し、新しい root パスワードを指定することが必要です。これを行うまで、root はそれ以外何もできません。これは、使用するすべての root アカウントについて実行する必要があります。パスワードを変更するには、SET PASSWORD ステートメントを (たとえば mysql クライアントとともに) 使用します。mysqladmin または mysql_secure_installation も使用できます。

    (アップグレードではなく) 新しい RPM インストール操作は、mysql_install_db--random-passwords オプションで起動します。(Unbreakable Linux Network での RPM を使用したインストール操作は mysql_install_db を使用しないため、影響されません。)

    MySQL 5.6.9 では、(アップグレードではなく) 新しい Solaris PKG インストール操作は、mysql_install_db--random-passwords オプションで起動します。

    バイナリの .tar.gz 配布またはソース配布を使用するインストール操作では、mysql_install_db--random-passwords オプションで手動で起動して、MySQL インストールをよりセキュアにできます。これは、機密データのあるサイトでは特に推奨されます。

    このオプションは MySQL 5.6.8 で追加されました。

  • --rpm

    内部使用。このオプションは、RPM パッケージを使用して実行されるインストール操作で、MySQL のインストールプロセス中に使用されます。

  • --skip-name-resolve

    付与テーブルのエントリ作成時にホスト名ではなく IP アドレスを使用します。このオプションは、DNS が機能しない場合に便利です。

  • --srcdir=path

    内部使用。このオプションは、mysql_install_db がエラーメッセージファイルおよびヘルプテーブルの移入用ファイルなどのサポートファイルを検索するディレクトリを指定します。

  • --user=user_name

    mysqld を実行する際に使用するシステム (ログイン) ユーザー名。mysqld によって作成されるファイルおよびディレクトリは、このユーザーが所有します。このオプションを使用するには、システム root ユーザーでなければなりません。デフォルトでは、mysqld は現在のログイン名を使用して稼働し、作成されるファイルおよびディレクトリはそのユーザーの所有となります。

  • --verbose

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --windows

    内部使用。このオプションは、Windows 配布の作成に使用されます。

4.4.4 mysql_plugin — MySQL サーバープラグインの構成

mysql_plugin ユーティリティーを使用すると、MySQL 管理者は MySQL サーバーがどのプラグインをロードするかを管理できます。サーバーの起動時に手動で --plugin-load オプションを指定したり、INSTALL PLUGIN および UNINSTALL PLUGIN ステートメントを実行時に使用したりする代わりに使用できます。mysql_plugin は MySQL 5.6.3 で使用可能です。

mysql_plugin は、プラグインを有効にするために呼び出されたか無効にするために呼び出されたかによって、プラグインレジストリとして機能する mysql.plugin テーブルの行を挿入または削除します。(この操作を実行するために、mysql_plugin は MySQL サーバーをブートストラップモードで呼び出します。これは、サーバーがすでに稼働していてはならないことを意味します。)通常のサーバー起動では、サーバーは mysql.plugin にリストされているプラグインを自動的にロードして有効にします。プラグインの有効化をさらに管理するには、セクション5.1.8.1「プラグインのインストールおよびアンインストール」で説明するように、特定のプラグインを指名する --plugin_name オプションを使用します。

mysql_plugin は、呼び出されるたびに構成ファイルを読み取り、単一のプラグインライブラリオブジェクトファイルに含まれるプラグインを構成する方法を決定します。mysql_plugin を呼び出すには、次の構文を使用します。

mysql_plugin [options] plugin {ENABLE|DISABLE}

plugin は構成するプラグインの名前です。ENABLE または DISABLE (大文字と小文字は区別されません) は、構成ファイルで指名されたプラグインライブラリのコンポーネントを有効にするか無効にするかを指定します。plugin 引数および ENABLE 引数または DISABLE 引数の順序はどちらでもかまいません。

たとえば、Linux で myplugins.so、または Windows で myplugins.dll という名前のプラグインライブラリファイルのコンポーネントを構成するには、plugin の値を myplugins に指定します。このプラグインライブラリに、plugin1plugin2、および plugin3 という 3 つのプラグインが含まれ、これらすべてを mysql_plugin コントロールに構成するとします。規則では、構成ファイルは .ini というサフィクスおよびプラグインライブラリと同じベース名を持つため、このプラグインライブラリのデフォルト構成ファイル名は myplugins.ini です。構成ファイルの内容は次のようになります。

myplugins
plugin1
plugin2
plugin3

myplugins.ini ファイルの最初の行は、.so または .dll などの拡張子のないライブラリオブジェクトファイルの名前です。残りの行は、有効または無効にするコンポーネントの名前です。ファイル内の各値は、独立した行に記述するようにしてください。'#' の文字で始まる行は、コメントとみなされ無視されます。

構成ファイルにリストされたプラグインを有効にするには、mysql_plugin を次のように呼び出します。

shell> mysql_plugin myplugins ENABLE

プラグインを無効にするには、ENABLE ではなく DISABLE を使用します。

mysql_plugin が構成ファイルもプラグインライブラリファイルも検出できない場合、または mysql_plugin が MySQL サーバーを起動できない場合は、エラーが発生します。

mysql_plugin は次のオプションをサポートします。これらはコマンド行または任意のオプションファイルの [mysqld] グループで指定できます。[mysqld] グループに指定されるオプションに関しては、mysql_plugin--basedir--datadir、および --plugin-dir の各オプションを認識し、その他は無視します。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.3 mysql_plugin オプション

オプション名説明
--basedirサーバーのベースディレクトリ
--datadirサーバーのデータディレクトリ
--helpヘルプメッセージを表示して終了
--my-print-defaultsmy_print_defaults へのパス
--mysqldサーバーへのパス
--no-defaults構成ファイルを読み取らない
--plugin-dirプラグインがインストールされているディレクトリ
--plugin-iniプラグイン構成ファイル
--print-defaults構成ファイルのデフォルトを表示
--verbose冗長モード
--versionバージョン情報を表示して終了

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --basedir=path, -b path

    サーバーのベースディレクトリ。

  • --datadir=path, -d path

    サーバーのデータディレクトリ。

  • --my-print-defaults=path, -b path

    my_print_defaults プログラムへのパス。

  • --mysqld=path, -b path

    mysqld サーバーへのパス。

  • --no-defaults, -p

    構成ファイルから値を読み取りません。このオプションにより、管理者は構成ファイルからデフォルトを読み取るのをスキップできます。

    mysql_plugin では、--no-defaults をサポートするほかのほとんどの MySQL プログラムとは異なり、このオプションをコマンド行の最初に指定する必要はありません。

  • --plugin-dir=path, -p path

    サーバーのプラグインディレクトリ。

  • --plugin-ini=file_name, -i file_name

    mysql_plugin 構成ファイル。相対パス名は、現在のディレクトリに相対的に解釈されます。このオプションを指定しない場合、デフォルトはプラグインディレクトリの plugin.ini です。ここで、plugin はコマンド行の plugin 引数です。

  • --print-defaults, -P

    構成ファイルからのデフォルト値を表示します。このオプションを使用すると、mysql_plugin--basedir--datadir、および --plugin-dir のデフォルトが構成ファイルにあればそれらを出力します。変数の値が見つからない場合は何も表示されません。

    mysql_plugin では、--print-defaults をサポートするほかのほとんどの MySQL プログラムとは異なり、このオプションをコマンド行の最初に指定する必要はありません。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。このオプションは情報量を増加させるために複数回使用できます。

  • --version, -V

    バージョン情報を表示して終了します。

4.4.5 mysql_secure_installation — MySQL インストールのセキュリティー改善

このプログラムにより、次の方法で MySQL インストールのセキュリティーを改善できます。

  • root アカウントのパスワードを設定できます。

  • ローカルホスト以外からアクセス可能な root アカウントを削除できます。

  • 匿名ユーザーアカウントを削除できます。

  • test データベース (デフォルトでは、匿名ユーザーであっても、すべてのユーザーがアクセスできます)、および test_ で始まる名前を持つデータベースへのアクセスを許可する権限を削除できます。

mysql_secure_installation により、セクション2.10.2「最初の MySQL アカウントのセキュリティー設定」に述べられているのと同様のセキュリティーの推奨事項を実装しやすくなります。

mysql_secure_installation は引数なしで呼び出します。

shell> mysql_secure_installation

このスクリプトを実行すると、どのアクションを実行するか決定するように求められます。

4.4.6 mysql_tzinfo_to_sql — タイムゾーンテーブルのロード

mysql_tzinfo_to_sql プログラムは、mysql データベースに、タイムゾーンテーブルをロードします。zoneinfo データベース (タイムゾーンを記述するファイルのセット) があるシステムで使用します。このようなシステムには、Linux、FreeBSD、Solaris、OS X などがあります。これらのファイルの適切な場所の 1 つは /usr/share/zoneinfo ディレクトリです (Solaris では /usr/share/lib/zoneinfo)。zoneinfo データベースがないシステムの場合には、セクション10.6「MySQL Server でのタイムゾーンのサポート」で説明するダウンロード可能なパッケージを使用できます。

mysql_tzinfo_to_sql はいくつかの方法で呼び出せます。

shell> mysql_tzinfo_to_sql tz_dirshell> mysql_tzinfo_to_sql tz_file tz_nameshell> mysql_tzinfo_to_sql --leap tz_file

最初の呼び出し構文は、zoneinfo ディレクトリのパス名を mysql_tzinfo_to_sql に渡し、出力を mysql プログラムに送信します。例:

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

mysql_tzinfo_to_sql は、システムのタイムゾーンファイルを読み取り、そのファイルから SQL ステートメントを生成します。mysql はこれらのステートメントを処理して、タイムゾーンテーブルをロードします。

2 番目の構文は、mysql_tzinfo_to_sql がタイムゾーン名 tz_name に対応する単一のタイムゾーンファイル tz_file をロードします。

shell> mysql_tzinfo_to_sql tz_filetz_name | mysql -u root mysql

うるう秒を考慮する必要がある場合は、3 番目の構文を使用して mysql_tzinfo_to_sql を呼び出します。これはうるう秒の情報を初期化します。tz_file はタイムゾーンファイルの名前です。

shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql

mysql_tzinfo_to_sql の実行後、以前にキャッシュしたすべてのタイムゾーンデータを使用し続けないように、サーバーを再起動することをお勧めします。

4.4.7 mysql_upgrade — MySQL テーブルのチェックとアップグレード

mysql_upgrade はすべてのデータベースのすべてのテーブルに対して、MySQL サーバーの現在のバージョンとの非互換性を調べます。また、mysql_upgrade は、システムテーブルをアップグレードして、追加された可能性のある新しい権限または機能を利用できるようにします。

mysql_upgrade は、テーブルに非互換性がある可能性が見つかった場合はテーブルのチェックを実行し、問題が検出された場合はテーブルの修復を試みます。テーブルを修復できない場合は、手動でテーブルを修復する方法について、セクション2.11.4「テーブルまたはインデックスの再作成または修復」を参照してください。

mysql_upgrade は、MySQL をアップグレードするたびに実行するようにしてください。

Linux で、MySQL を RPM パッケージからインストールする場合は、サーバーとクライアントの RPM をインストールする必要があります。mysql_upgrade はサーバー RPM に含まれていますが、クライアント RPM に mysqlcheck が含まれるため、クライアント RPM が必要です。(セクション2.5.5「RPM パッケージを使用して MySQL を Linux にインストールする」を参照してください。)

注記

Windows Server 2008、Vista、およびそれ以降では、mysql_upgrade を管理者権限で実行する必要があります。そのためには、コマンドプロンプトを管理者として実行してそのコマンドを実行します。そうしないと、アップグレードが正しく実行されない場合があります。

注意

アップグレードを実行するに、必ず現在の MySQL インストールをバックアップするようにしてください。セクション7.2「データベースバックアップ方法」を参照してください。

一部のアップグレードの非互換性により、MySQL インストールをアップグレードして mysql_upgrade を実行する前に特殊な処理が必要な場合があります。このような非互換性が、使用しているインストールに該当するかどうかの判断、およびその対処方法については、セクション2.11.1「MySQL のアップグレード」を参照してください。

mysql_upgrade を使用するには、サーバーが稼働していることを確認してください。そのあと、次のように呼び出します。

shell> mysql_upgrade [options]

mysql_upgrade の実行後、システムテーブルに行われた変更が有効になるように、サーバーを停止して再起動します。

複数の MySQL サーバーインスタンスが稼働している場合は、目的のサーバーに適した接続パラメータを使用して mysql_upgrade を呼び出します。たとえば、ローカルホストで 3306 から 3308 までのポートでサーバーが稼働している場合、適切なポートに接続してそれぞれをアップグレードします。

shell> mysql_upgrade --protocol=tcp -P 3306 [other_options]shell> mysql_upgrade --protocol=tcp -P 3307 [other_options]shell> mysql_upgrade --protocol=tcp -P 3308 [other_options]

Unix でのローカルホスト接続では、--protocol=tcp オプションを使用すると、Unix ソケットファイルではなく TCP/IP を強制的に使用して接続が行われます。

mysql_upgrade は次のコマンドを実行して、テーブルのチェックと修復およびシステムテーブルのアップグレードを実行します。

mysqlcheck --no-defaults --databases --fix-db-names --fix-table-names mysql
mysqlcheck --no-defaults --check-upgrade --databases --auto-repair mysql
mysql < fix_priv_tables
mysqlcheck --no-defaults --all-databases --skip-database=mysql --fix-db-names --fix-table-names
mysqlcheck --no-defaults --check-upgrade --all-databases --skip-database=mysql --auto-repair

前述のコマンドに関する注意:

  • mysql_upgrade はまた、mysql_upgrade コマンドに --write-binlog オプションが指定されたかどうかに応じて、--write-binlog または --skip-write-binlogmysqlcheck コマンドに追加します。

  • mysql_upgrademysqlcheck--all-databases オプションで呼び出すため、すべてのデータベースのすべてのテーブルが処理され、完了するのに長時間かかる場合があります。各テーブルはロックされるため、処理中にほかのセッションで使用することはできません。チェックと修復の処理には時間がかかることがあり、特に大きなテーブルでは長い時間を要する可能性があります。

  • --check-upgrade オプションで実行されるチェックの詳細は、CHECK TABLE ステートメントの FOR UPGRADE オプションの説明を参照してください (セクション13.7.2.2「CHECK TABLE 構文」を参照してください)。

  • fix_priv_tables は、mysql_upgrade により内部的に生成され、mysql データベース内のテーブルをアップグレードするための SQL ステートメントを含むスクリプトを示します。

チェックおよび修復が行われたすべてのテーブルは、現在の MySQL バージョン番号でマークされます。これにより、次に同じバージョンのサーバーで mysql_upgrade を立ち上げるときに、そのテーブルを再度チェックして修正する必要があるかどうかが確実にわかります。

mysql_upgrade はまた、MySQL バージョン番号をデータディレクトリの mysql_upgrade_info という名前のファイルに保存します。これは、テーブルのチェックをスキップできるように、すべてのテーブルがこのリリースに関してチェック済みかどうかを迅速にチェックするために使用されます。このファイルを無視してとにかくチェックを実行するには、--force オプションを使用します。

mysql_upgrade では、ヘルプテーブルの内容はアップグレードされません。アップグレードの手順については、セクション5.1.10「サーバー側のヘルプ」を参照してください。

デフォルトでは、mysql_upgrade は MySQL root ユーザーとして実行されます。mysql_upgrade の実行時に root のパスワードが期限切れの場合、パスワードが期限切れであり、その結果 mysql_upgrade が失敗したというメッセージが表示されます。これを修正するには、root のパスワードを期限が切れていないものにリセットして、mysql_upgrade をふたたび実行します。

shell> mysql -u root -pEnter password: **** <- enter root password here
mysql> SET PASSWORD = PASSWORD('root-password');mysql> quitshell> mysql_upgrade [options]

mysql_upgrade は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysql_upgrade] グループおよび [client] グループで指定できます。その他のオプションは mysqlcheck に渡されます。オプションファイルの詳細は、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.4 mysql_upgrade オプション

オプション名説明導入
--basedir使用しない
--character-sets-dir文字セットがインストールされているディレクトリ
--compressクライアントとサーバー間で送信される情報をすべて圧縮
--datadir使用しない
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン5.6.2
--default-character-setデフォルト文字セットを指定
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--forceMySQL の現在のバージョンに対して mysql_upgrade を実行済みでも強制的に実行
--helpヘルプメッセージを表示して終了
--host指定されたホスト上で MySQL サーバーに接続
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--no-defaultsオプションファイルを読み取らない
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ5.6.2
--port接続に使用する TCP/IP ポート番号
--print-defaultsデフォルトを出力
--protocol使用する接続プロトコル
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--tmpdir一時ファイルのディレクトリ
--upgrade-system-tablesシステムテーブルのみを更新し、データは更新しない
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--version-check適切なサーバーバージョンをチェック5.6.12
--write-binlogすべてのステートメントをバイナリログに書き込み

  • --help

    短いヘルプメッセージを表示して終了します。

  • --basedir=dir_name

    MySQL インストールディレクトリへのパス。このオプションは、後方互換性のため受け付けられますが無視されます。MySQL 5.7 では削除されました。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --compress

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --datadir=dir_name

    データディレクトリへのパス。このオプションは、後方互換性のため受け付けられますが無視されます。MySQL 5.7 では削除されました。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:O,/tmp/mysql_upgrade.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info, -T

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysql_upgrade は通常 [client] グループおよび [mysql_upgrade] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysql_upgrade[client_other] グループおよび [mysql_upgrade_other] グループも読み取ります。

  • --force

    mysql_upgrade_info ファイルを無視し、MySQL の現在のバージョンに対して mysql_upgrade を実行済みでも強制的に実行します。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにすることができます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、 --no-defaults が使用されたとしても、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysql_upgrade はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysql_upgrade がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --tmpdir=dir_name, -t path

    一時ファイルを作成するために使用するディレクトリのパス名。

  • --upgrade-system-tables, -s

    システムテーブルのみをアップグレードし、データはアップグレードしません。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。デフォルトのユーザー名は root です。

  • --verbose

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version-check, -k

    mysql_upgrade の接続先のサーバーのバージョンをチェックして、mysql_upgrade がビルドされたバージョンと同じであることを確認します。そうでない場合は mysql_upgrade は終了します。このオプションはデフォルトで有効にされています。--skip-version-check を使用して無効化してください。このオプションは MySQL 5.6.12 で追加されました。

  • --write-binlog

    mysql_upgrade の実行中にバイナリロギングを有効にします。MySQL 5.6.6 以前では、これはデフォルトの動作でした。(アップグレード中にバイナリロギングを無効にするには、プログラムを --skip-write-binlog で起動することによって、このオプションの逆を使用する必要がありました。)MySQL 5.6.7 から、mysql_upgrade によるバイナリロギングはデフォルトで無効です (Bug #14221043)。アクションをバイナリログに書き込む場合は、明示的に --write-binlog を使用してプログラムを呼び出します。(また、MySQL 5.6.7 から、--skip-write-binlog オプションは実際には何もしません。)

    グローバルトランザクション識別子を有効にして稼働している MySQL サーバーでは、mysql_upgrade を実行することは推奨されません (Bug #13833710)。これは、GTID を有効にするということは、mysql_upgrade がシステムテーブルに対して、MyISAM などの非トランザクションストレージエンジンを使用して実行する必要のある更新が、失敗することを意味するからです。詳細は、セクション17.1.3.4「GTID ベースレプリケーションの制約」を参照してください。

4.5 MySQL クライアントプログラム

このセクションでは、MySQL サーバーに接続するクライアントプログラムについて説明します。

4.5.1 mysql — MySQL コマンド行ツール

mysql は、入力行の編集機能を備えた簡単な SQL シェルです。インタラクティブおよび非インタラクティブでの使用をサポートします。インタラクティブで使用した場合、クエリー結果は ASCII 表形式で提示されます。非インタラクティブ (フィルタとしてなど) で使用する場合、結果はタブ区切り形式で表示されます。出力形式は、コマンドオプションを使用して変更できます。

大きな結果セット用のメモリーが足りないことで問題が発生する場合は、--quick オプションを使用します。これにより mysql は、全結果セットを表示前に取得してメモリー内でバッファリングする代わりに、サーバーから 1 行ずつ結果を取得することを強制されます。これは、mysql_store_result() ではなく、クライアント/サーバーライブラリ内の mysql_use_result() C API 関数を使用して結果セットを返すことで実行されます。

mysql は非常に簡単に使用できます。次のように、コマンドインタプリタのプロンプトから起動してください。

shell> mysql db_name

または:

shell> mysql --user=user_name --password=your_passworddb_name

次に SQL ステートメントを入力し、;\g、または \G で終わらせ Enter を押します。

Control+C と入力すると、mysql は現在のステートメントの強制終了を試行します。これが実行できない場合、またはステートメントを強制終了する前に Control+C が再度入力された場合は、mysql は終了します。

SQL ステートメントは次のように、スクリプトファイル (バッチファイル) で実行できます。

shell> mysql db_name < script.sql > output.tab

Unix では、mysql クライアントはインタラクティブに実行されたステートメントを履歴ファイルにログ記録します。セクション4.5.1.3「mysql のロギング」を参照してください。

4.5.1.1 mysql のオプション

mysql は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysql] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.5 mysql のオプション

オプション名説明導入
--auto-rehash自動リハッシュを有効化
--auto-vertical-output結果セットの垂直形式での表示を有効化
--batch履歴ファイルを使用しない
--binary-mode\r\n の \n への変換および \0 をクエリーの終端として処理することを無効化5.6.3
--bind-address指定されたネットワークインタフェースを使用して MySQL サーバーに接続5.6.1
--character-sets-dir文字セットがインストールされているディレクトリ
--column-names結果にカラム名を記述
--column-type-info結果セットのメタデータを表示
--commentsサーバーに送信されたステートメント内のコメントを保持するか削除するか
--compressクライアントとサーバー間で送信される情報をすべて圧縮
--connect-expired-passwordクライアントが期限切れパスワードのサンドボックスモードを処理できることをサーバーに指示。5.6.12
--connect_timeout接続タイムアウトまでの秒数
--database使用されるべきデータベース
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン
--default-character-setデフォルト文字セットを指定
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--delimiterステートメント区切り文字を設定
--enable-cleartext-plugin平文の認証プラグインを有効化5.6.7
--executeステートメントを実行して終了
--forceSQL エラーが発生しても続行
--helpヘルプメッセージを表示して終了
--histignoreロギングに関してどのステートメントを無視するかを指定するパターン5.6.8
--host指定されたホスト上で MySQL サーバーに接続
--htmlHTML 出力を生成
--ignore-spaces関数名のあとのスペースを無視
--init-command接続後に実行する SQL ステートメント
--line-numbersエラーの行番号を書き込み
--local-infileLOAD DATA INFILE で LOCAL 機能を有効化または無効化
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--max_allowed_packetサーバーとの間で送受信するパケットの最大長
--max_join_size--safe-updates を使用する結合で、自動的に設定される行の制限
--named-commands名前付き mysql コマンドを有効化
--net_buffer_lengthTCP/IP とソケット通信のバッファーサイズ
--no-auto-rehash自動リハッシュを無効化
--no-beepエラー時に音を発生させない
--no-defaultsオプションファイルを読み取らない
--one-databaseコマンド行で指定されたデフォルトデータベースに対するステートメント以外を無視
--pagerクエリー出力のページングに指定されたコマンドを使用
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ
--port接続に使用する TCP/IP ポート番号
--print-defaultsデフォルトを出力
--promptプロンプトを指定された形式に設定
--protocol使用する接続プロトコル
--quick各クエリーの結果をキャッシュしない
--rawカラム値をエスケープの変換なしで書き込み
--reconnectサーバーとの接続が失われたとき、再接続を自動的に試行
--safe-updates, --i-am-a-dummyキー値を指定する UPDATE ステートメントおよび DELETE ステートメントのみを許可
--secure-auth古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない
--select_limit--safe-updates 使用時に自動的に設定される SELECT ステートメントの制限
--server-public-key-pathRSA 公開鍵を含むファイルへのパス名5.6.6
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--show-warnings各ステートメントのあとに警告があれば表示
--sigint-ignoreSIGINT 信号を無視 (通常、Control+C を入力した結果)
--silentサイレントモード
--skip-auto-rehash自動リハッシュを無効化
--skip-column-names結果にカラム名を記述しない
--skip-line-numbersエラーの行番号を省略
--skip-named-commands名前付き mysql コマンドを無効化
--skip-pagerページングを無効化
--skip-reconnect再接続を無効化
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--table出力を表形式で表示
--tee出力のコピーを指定されたファイルに追加
--unbuffered各クエリーのあとでバッファーをフラッシュ
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--versionバージョン情報を表示して終了
--verticalクエリー出力行を垂直形式で出力 (カラム値ごとに 1 行)
--wait接続が確立できない場合、中止せずに待機してからリトライ
--xmlXML 出力を生成

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --auto-rehash

    自動リハッシュを有効にします。このオプションはデフォルトでオンになっており、データベース、テーブル、およびカラムの名前補完が可能になります。リハッシュを無効にするには、--disable-auto-rehash を使用します。これにより、mysql の起動がより高速になりますが、名前補完を使用する場合は rehash コマンドまたはそのショートカット \# を発行する必要があります。

    名前を補完するには、最初の部分を入力して Tab を押します。名前があいまいでない場合、mysql がその名前を補完します。そうでない場合は、Tab をもう一度押して、これまでに入力した値で始まる、考えられる名前を表示できます。デフォルトのデータベースがない場合、補完は行われません。

    注記

    この機能では、readline ライブラリでコンパイルされた MySQL クライアントが必要です。通常、readline ライブラリは Windows では使用できません。

  • --auto-vertical-output

    結果セットが現在のウィンドウに対して大きすぎる場合には縦に表示され、そうでない場合は通常の表形式が使用されるようになります。(これは、; または \G で終了するステートメントに適用されます。)

  • --batch, -B

    カラム区切り文字としてタブを使用し、各行を新しい行に出力します。このオプションでは、mysql は履歴ファイルを使用しません。

    バッチモードでは、表形式でない出力が生成され、特殊文字のエスケープ処理が行われます。raw モードを使用すれば、エスケープ処理を無効にできます。--raw オプションの説明を参照してください。

  • --binary-mode

    このオプションは、BLOB 値を含む可能性のある mysqlbinlog の出力を処理する場合に便利です。mysql は、デフォルトではステートメント文字列内の \r\n\n に変換し、\0 をステートメント終端記号と解釈します。--binary-mode ではこの両方の機能が無効になります。また、非インタラクティブモード (mysql にパイプされた入力または source コマンドでロードされた入力) の charset および delimiter を除いて、すべての mysql コマンドも無効になります。

    このオプションは MySQL 5.6.3 で追加されました。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --column-names

    結果にカラム名を記述します。

  • --column-type-info, -m

    結果セットのメタデータを表示します。

  • --comments, -c

    サーバーに送信されたステートメント内のコメントを保持するかどうかを指定します。デフォルトは --skip-comments (コメントを破棄) であり、--comments (コメントを保持) で有効になります。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --connect-expired-password

    サーバーに対し、接続に使用されたアカウントのパスワードの期限が切れている場合に、クライアントがサンドボックスモードを処理できることを示します。通常サーバーは、パスワードの期限の切れたアカウントを使用して接続を試みる非インタラクティブなクライアントを切断するため、これは非インタラクティブに mysql を起動する場合に便利です。(セクション6.3.6「パスワードの期限切れとサンドボックスモード」を参照してください。)このオプションは MySQL 5.6.12 で追加されました。

  • --database=db_name, -D db_name

    使用するデータベース。これは主に、オプションファイルで便利です。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o,/tmp/mysql.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info, -T

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

  • --default-character-set=charset_name

    クライアントおよび接続で、charset_name をデフォルト文字セットとして使用します。

    オペレーティングシステムが utf8 またはその他のマルチバイト文字セットを使用する場合に生じる一般的な問題は、MySQL クライアントがデフォルトで latin1 文字セットを使用するため、mysql クライアントからの出力が正しくフォーマットされないことです。このような問題は通常、このオプションを使用して、クライアントが代わりにシステムの文字セットを使用するように強制することで解決できます。

    詳細は、セクション10.5「文字セットの構成」を参照してください。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysql は通常 [client] グループおよび [mysql] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysql[client_other] グループおよび [mysql_other] グループも読み取ります。

  • --delimiter=str

    ステートメント区切り文字を設定します。デフォルトはセミコロン (;) 文字です。

  • --disable-named-commands

    名前付きコマンドを無効化します。\* 形式のみを使用します。または、セミコロン (;) で終わる行の先頭でのみ名前付きコマンドを使用します。mysql の起動時に、このオプションはデフォルトで有効になっています。ただし、このオプションを使用しても、ロング形式コマンドは最初の行から効果を発揮します。セクション4.5.1.2「mysql コマンド」を参照してください。

  • --enable-cleartext-plugin

    mysql_clear_password 平文認証プラグインを有効にします。(セクション6.3.8.7「クライアント側のクリアテキスト認証プラグイン」を参照してください。)このオプションは MySQL 5.6.7 で追加されました。

  • --execute=statement, -e statement

    ステートメントを実行して、終了します。デフォルトの出力形式は、--batch で生成されるものと同様です。例については、セクション4.2.4「コマンド行でのオプションの使用」を参照してください。このオプションでは、mysql は履歴ファイルを使用しません。

  • --force, -f

    SQL エラーが発生しても続行します。

  • --histignore

    ロギングのために、どのステートメントを無視するかを指定する、コロン区切りの 1 つまたは複数のパターンのリスト。これらのパターンはデフォルトのパターンリスト ("*IDENTIFIED*:*PASSWORD*") に追加されます。このオプションに指定された値は、履歴ファイルに書き込まれるステートメントのロギングに影響します。詳細は、セクション4.5.1.3「mysql のロギング」を参照してください。このオプションは MySQL 5.6.8 で追加されました。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --html, -H

    HTML 出力を生成します。

  • --ignore-spaces, -i

    関数名の後ろのスペースを無視します。これの効果は、IGNORE_SPACE SQL モード (セクション5.1.7「サーバー SQL モード」を参照してください) に関する議論で説明されています。

  • --init-command=str

    サーバーへの接続後に実行する SQL ステートメント。auto-reconnect が有効の場合、ステートメントは再接続が生じたあとに再度実行されます。

  • --line-numbers

    エラーの行番号を書き込みます。--skip-line-numbers で無効にできます。

  • --local-infile[={0|1}]

    LOAD DATA INFILELOCAL 機能を有効または無効にします。値がない場合、オプションは LOCAL を有効にします。このオプションは、LOCAL を明示的に有効または無効にするため、--local-infile=0 または --local-infile=1 として指定できます。サーバーも LOCAL をサポートしていない場合、有効にしても効果はありません。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --named-commands, -G

    名前付き mysql コマンドを有効にします。ショート形式のコマンドのみではなく、ロング形式のコマンドが許可されます。たとえば、quit\q は両方認識されます。名前付きコマンドを無効化するには、--skip-named-commands を使用します。セクション4.5.1.2「mysql コマンド」を参照してください。

  • --no-auto-rehash, -A

    これは --skip-auto-rehash と同様の効果を持ちます。--auto-rehash の説明を参照してください。

  • --no-beep, -b

    エラー時に音を発生させません。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用されたとしても、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --one-database, -o

    デフォルトデータベースがコマンド行で指定されたものである間に生じるステートメント以外を無視します。このオプションは初歩的なものであり、注意して使用してください。ステートメントのフィルタリングは USE ステートメントのみに基づいています。

    最初、mysql は入力内のステートメントを実行します。これは、データベース db_name をコマンド行で指定することは USE db_name を入力の最初に挿入することと同等であるためです。次に、USE ステートメントを検出するたびに、mysql は、指名されたデータベースがコマンド行のものであるかによって、後続のステートメントを受け入れまたは拒否します。ステートメントの内容は重要ではありません。

    mysql が次の一連のステートメントを処理するために起動されたとします。

    DELETE FROM db2.t2;
    USE db2;
    DROP TABLE db1.t1;
    CREATE TABLE db1.t1 (i INT);
    USE db1;
    INSERT INTO t1 (i) VALUES(1);
    CREATE TABLE db2.t1 (j INT);

    コマンド行が mysql --force --one-database db1 の場合、mysql は入力を次のように処理します。

    • DELETE ステートメントでは別のデータベースのテーブルが指名されていますが、デフォルトデータベースは db1 であるため、このステートメントは実行されます。

    • DROP TABLE ステートメントおよび CREATE TABLE ステートメントでは db1 のテーブルを指名していますが、デフォルトデータベースが db1 ではないため、これらのステートメントは実行されません。

    • CREATE TABLE ステートメントでは別のデータベースのテーブルが指名されていますが、デフォルトデータベースは db1 であるため、INSERT ステートメントおよび CREATE TABLE ステートメントは実行されます。

  • --pager[=command]

    クエリー出力のページングに、指定されたコマンドを使用します。このコマンドが省略された場合、デフォルトのページャーは PAGER 環境変数の値となります。有効なページャーは、lessmorecat [> filename]、などです。このオプションは Unix でインタラクティブモードの場合のみ機能します。ページングを無効化するには、--skip-pager を使用してください。セクション4.5.1.2「mysql コマンド」には出力のページングの詳細説明があります。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysql はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysql がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --prompt=format_str

    プロンプトを指定された形式に設定します。デフォルトは mysql> です。プロンプト内に含めることができる特別なシーケンスは、セクション4.5.1.2「mysql コマンド」で説明されています。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --quick, -q

    各クエリー結果をキャッシュせず、各行を受信ししだい出力します。出力が遅延された場合、サーバーの速度が低下することがあります。このオプションでは、mysql は履歴ファイルを使用しません。

  • --raw, -r

    表形式の出力では、カラムを枠で囲むことにより、1 つのカラム値を別のカラム値と区別できます。表形式でない出力 (バッチモードで生成される場合や --batch または --silent オプションを指定した場合など) では、簡単に識別できるように特殊文字が出力時にエスケープされます。改行、タブ、NUL、およびバックスラッシュはそれぞれ、\n\t\0、および \\ と記述されます。--raw オプションを指定すると、この文字のエスケープ処理は無効になります。

    次の例は、表形式と表形式でない出力の違い、および raw モードを使用してエスケープ処理を無効にした場合を示しています。

    % mysqlmysql> SELECT CHAR(92);
    +----------+
    | CHAR(92) |
    +----------+
    | \ |
    +----------+
    % mysql -smysql> SELECT CHAR(92);
    CHAR(92)
    \\
    % mysql -s -rmysql> SELECT CHAR(92);
    CHAR(92)
    \
  • --reconnect

    サーバーとの接続が失われたとき、再接続を自動的に試行します。接続が失われるたびに一度再接続が試みられます。再接続動作を抑制するには、--skip-reconnect を使用します。

  • --safe-updates, --i-am-a-dummy, -U

    キー値を使用して変更する行を指定する UPDATE ステートメントおよび DELETE ステートメントのみを許可します。このオプションをオプションファイル内で設定した場合、--safe-updates をコマンド行で使用することでオーバーライドできます。このオプションについては、セクション4.5.1.6「mysql のヒント」を参照してください。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。MySQL 5.6.7 では、このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --server-public-key-path=file_name

    サーバー RSA 公開鍵を含むファイルへのパス名。ファイルは PEM 形式である必要があります。公開鍵は、sha256_password プラグインによって認証するアカウントを使用して、サーバーへの接続を作成するためのクライアントパスワードの RSA 暗号化に使用されます。このオプションは、そのプラグインによって認証しないクライアントアカウントに対しては無視されます。さらに、クライアントが SSL 接続を使用して、サーバーに接続する場合のように、パスワード暗号化が必要でない場合も無視されます。

    サーバーは必要に応じて公開鍵をクライアントに送信するため、RSA パスワードの暗号化が行われるように、このオプションを使う必要はありません。そうすることで、サーバーは鍵を送信する必要がないため、効率が向上します。

    RSA 公開鍵の取得方法を含め、sha256_password プラグインの使用に関する追加の説明については、セクション6.3.8.4「SHA-256 認証プラグイン」を参照してください。

    このオプションは、MySQL が OpenSSL を使用してビルドされている場合のみ利用できます。MySQL 5.6.6 で --server-public-key という名前で追加され、5.6.7 で --server-public-key-path に名前変更されました。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --show-warnings

    警告が存在する場合、各ステートメント後に表示させます。このオプションはインタラクティブとバッチモードにのみ対応しています。

  • --sigint-ignore

    SIGINT 信号を無視します (通常、Control+C を入力した結果)。

  • --silent, -s

    サイレントモード。出力の生成を少なくします。このオプションを複数回指定して、出力の生成をさらに少なくできます。

    このオプションでは、表形式でない出力が生成され、特殊文字のエスケープ処理が行われます。raw モードを使用すれば、エスケープ処理を無効にできます。--raw オプションの説明を参照してください。

  • --skip-column-names, -N

    結果にカラム名を記述しません。

  • --skip-line-numbers, -L

    エラーの行番号を書き込みません。エラーメッセージを含む結果ファイルを比較する場合に便利です。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --table, -t

    出力を表形式で表示します。インタラクティブに使用する場合はこれがデフォルトですが、バッチモードで表形式の出力を生成するのにも使用できます。

  • --tee=file_name

    出力のコピーを指定されたファイルに追加します。このオプションはインタラクティブモードの場合のみ機能します。セクション4.5.1.2「mysql コマンド」で、tee ファイルについて詳細に説明しています。

  • --unbuffered, -n

    各クエリー後にバッファーをフラッシュします。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの出力を生成します。このオプションを複数回指定して、さらに多くの出力を生成できます。(たとえば、-v -v -v ではバッチモードでも表形式の出力を生成します。)

  • --version, -V

    バージョン情報を表示して終了します。

  • --vertical, -E

    クエリー出力行を縦に出力します (カラム値ごとに一行)。このオプションを使用しない場合、個々のステートメントを \G で終了させることにより、縦の出力を指定できます。

  • --wait, -w

    接続が確立できない場合、中止せずに待機してからリトライします。

  • --xml, -X

    XML 出力を生成します。

    <field name="column_name">NULL</field>

    --xmlmysql とともに使用された場合の出力は、mysqldump --xml の出力と一致します。詳細は、セクション4.5.4「mysqldump — データベースバックアッププログラム」を参照してください。

    次に示すように、XML 出力は XML 名前空間も使用します。

    shell> mysql --xml -uroot -e "SHOW VARIABLES LIKE 'version%'"<?xml version="1.0"?>
    <resultset statement="SHOW VARIABLES LIKE 'version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <row>
    <field name="Variable_name">version</field>
    <field name="Value">5.0.40-debug</field>
    </row>
    <row>
    <field name="Variable_name">version_comment</field>
    <field name="Value">Source distribution</field>
    </row>
    <row>
    <field name="Variable_name">version_compile_machine</field>
    <field name="Value">i686</field>
    </row>
    <row>
    <field name="Variable_name">version_compile_os</field>
    <field name="Value">suse-linux-gnu</field>
    </row>
    </resultset>

    (Bug #25946 を参照してください。)

--var_name=value を使用して、次の変数も設定できます。

  • connect_timeout

    接続タイムアウトまでの秒数。(デフォルト値は 0 です。)

  • max_allowed_packet

    クライアント/サーバー通信用のバッファーの最大サイズ。デフォルトは 16M バイト、最大は 1G バイトです。

  • max_join_size

    --safe-updates 使用時の、自動的に設定される結合内の行の制限。(デフォルト値は 1,000,000 です。)

  • net_buffer_length

    TCP/IP とソケット通信のバッファーサイズ。(デフォルト値は 16K バイトです。)

  • select_limit

    --safe-updates 使用時の、自動的に設定される SELECT ステートメントの制限。(デフォルト値は 1,000 です。)

4.5.1.2 mysql コマンド

mysql は、ユーザーが発行する各 SQL ステートメントを、実行のためサーバーに送信します。mysql 自体が解釈するコマンドもあります。これらのコマンドのリストを表示するには、mysql> プロンプトで help または \h と入力します。

mysql> helpList of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear command.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
For server side help, type 'help contents'

mysql--binary-mode オプションで起動された場合、非インタラクティブモードの charset および delimiter (mysql にパイプされた入力または source コマンドでロードされた入力) を除いて、すべての mysql コマンドは無効になります。

各コマンドにはそれぞれロング形式とショート形式があります。ロング形式では大文字小文字は区別されせんが、ショート形式では区別されます。ロング形式にはオプションのセミコロン終端記号があとに続くこともありますが、ショート形式ではありません。

複数行の コメント内でショート形式のコマンドを使用することはサポートされていません。

  • help [arg], \h [arg], \? [arg], ? [arg]

    使用可能な mysql コマンドの一覧を示すヘルプメッセージを表示します。

    help コマンドに引数を指定した場合、mysql は、サーバー側のヘルプにアクセスして MySQL リファレンスマニュアルの内容から検索するための文字列として引数を使用します。詳細は、セクション4.5.1.4「mysql サーバー側のヘルプ」を参照してください。

  • charset charset_name, \C charset_name

    デフォルトの文字セットを変更し、SET NAMES ステートメントを発行します。これにより、自動再接続が有効になっている状態で mysql が稼働中の場合 (これは推奨されていません) に、クライアントとサーバーの間で文字セットの同期が保持されます。これは、指定された文字セットが再接続に使用されるためです。

  • clear, \c

    現在の入力をクリアします。これは、入力しているステートメントの実行を取りやめる場合に使用します。

  • connect [db_namehost_name]], \r [db_namehost_name]]

    サーバーに再接続します。オプションのデータベース名およびホスト名の引数を指定して、デフォルトのデータベースまたはサーバーが稼働しているホストを指定することもできます。省略した場合は、現在の値が使用されます。

  • delimiter str, \d str

    mysql が SQL ステートメント間の区切り文字として解釈する文字列を変更します。デフォルトはセミコロン (;) 文字です。

    区切り文字の文字列は、delimiter コマンド行で引用符ありまたはなしの引数として指定できます。単一引用符 (')、二重引用符 (")、または逆引用符 (`) 文字で囲むことができます。引用符で囲まれた文字列内に引用符を含めるには、別の引用符で文字列を囲むか、またはバックスラッシュ (\) 文字で引用符をエスケープ処理します。バックスラッシュは MySQL のエスケープ文字であるため、引用符で囲まれた文字列の外側では使用しないようにしてください。引用符で囲まれていない引数については、区切り文字は最初のスペースまたは行の最後まで読み取られます。引用符で囲まれた引数の場合、区切り文字はその行の対応する引用符まで読み取られます。

    mysql は、区切り文字列のインスタンスがどこで検出されても (引用符で囲まれた文字列内を除いて)、ステートメントの区切り文字として解釈します。ほかの語に出現する可能性のある区切り文字を定義しないように注意してください。たとえば、区切り文字を X と定義すると、ステートメントで INDEX という語を使用できなくなります。mysql はこれを INDE に区切り文字 X が続くと解釈します。

    mysql によって認識される区切り文字がデフォルトの ; 以外の何かに設定されている場合、その文字のインスタンスは解釈されずにサーバーに送信されます。しかし、サーバー自体は引き続き ; をステートメントの区切り文字として解釈し、その解釈に従ってステートメントを処理します。サーバー側でのこの動作は、複数ステートメントの実行 (セクション23.7.17「複数ステートメント実行の C API サポート」を参照してください) や、ストアドプロシージャーおよび関数の本体、トリガー、およびイベントの解析 (セクション20.1「ストアドプログラムの定義」を参照してください) に効果があります。

  • edit, \e

    現在の入力ステートメントを編集します。mysql では、EDITOR および VISUAL 環境変数の値を確認して、どのエディタを使用するかを判断します。どちらの変数も設定されていない場合、デフォルトのエディタは vi です。

    edit コマンドは Unix でのみ機能します。

  • ego, \G

    現在のステートメントを、実行するためにサーバーに送信し、結果を縦の形式で表示します。

  • exit, \q

    mysql を終了します。

  • go, \g

    現在のステートメントを、実行するためにサーバーに送信します。

  • nopager, \n

    出力のページングを無効にします。pager の説明を参照してください。

    nopager コマンドは Unix でのみ機能します。

  • notee, \t

    tee ファイルへの出力コピーを無効にします。tee の説明を参照してください。

  • nowarning, \w

    各ステートメントのあとの警告の表示を無効にします。

  • pager [command], \P [command]

    出力のページングを有効にします。mysql を呼び出すときに --pager オプションを使用することで、lessmore、またはその他の同様のプログラムなどの Unix プログラムを使って、インタラクティブモードでクエリー結果を参照または検索できます。オプションで値を特定しない場合、mysqlPAGER 環境変数の値を確認し、ページャーをその値に設定します。ページャー機能はインタラクティブモードの場合のみ機能します。

    出力ページングは pager コマンドでインタラクティブに有効にでき、nopager で無効にできます。このコマンドはオプションの引数を取ります。指定された場合、ページングプログラムはそれに設定されます。引数がない場合、ページャーはコマンド行で設定されたもの、またはページャーが指定されていない場合は stdout になります。

    出力ページングは Unix 上でのみ機能します。これは Windows では存在しない popen() 関数を使用するからです。Windows では、クエリー出力の保存に tee オプションを代わりに使用できますが、これは場合によっては、出力のブラウズには pager ほど便利ではありません。

  • print, \p

    現在の入力ステートメントを実行しないで出力します。

  • prompt [str], \R [str]

    mysql プロンプトを指定の文字列に再構成します。プロンプトで使用できる特殊文字シーケンスについては、このセクションのあとの方で説明します。

    引数なしで prompt コマンドを指定すると、mysql はプロンプトをデフォルトの mysql> にリセットします。

  • quit, \q

    mysql を終了します。

  • rehash, \#

    ステートメントの入力中にデータベース、テーブル、およびカラムの名前補完を可能にする補完ハッシュを再構築します。(--auto-rehash オプションの説明を参照してください。)

  • source file_name, \. file_name

    指定されたファイルを読み取り、その中に含まれているステートメントを実行します。Windows では、パス名区切り文字を / または \\ に指定できます。

  • status, \s

    使用中の接続とサーバーに関するステータス情報を表示します。--safe-updates モードで稼働中の場合、status はクエリーに影響する mysql 変数の値も出力します。

  • system command, \! command

    デフォルトのコマンドインタプリタを使って指定のコマンドを実行します。

    system コマンドは Unix でのみ機能します。

  • tee [file_name], \T [file_name]

    mysql の呼び出し時に --tee オプションを使用することで、ステートメントとその出力をログに記録できます。画面上に表示されるデータはすべて指定されたファイルに追加されます。これはデバッグを行う際にも非常に便利です。mysql では、各ステートメントが終わって次のプロンプトが表示される直前に、結果をファイルにフラッシュします。tee 機能はインタラクティブモードの場合のみ機能します。

    tee コマンドを使用すれば、この機能をインタラクティブに有効にできます。パラメータがない場合、以前のファイルが使用されます。tee ファイルを無効にするには、notee コマンドを使用します。tee を実行するとロギングが再度有効になります。

  • use db_name, \u db_name

    db_name をデフォルトデータベースとして使用します。

  • warnings, \W

    各ステートメントのあとの警告の表示を有効にします (存在する場合)。

pager コマンドのヒントを次に記します。

  • これを使用してファイルに書き込むと、結果はファイルにのみ送られます。

    mysql> pager cat > /tmp/log.txt

    ページャーとして使用するプログラムのオプションを渡すこともできます。

    mysql> pager less -n -i -S
  • 前の例の、-S オプションに注意してください。幅の広いクエリー結果のブラウズの際に非常に便利です。非常に幅の広い結果セットは、画面上では読みにくい場合があります。less に対して -S オプションを指定すると、左右の方向キーを使用して横にスクロールできるため、結果セットが読みやすくなります。また、-Sless 内でインタラクティブに使用して、水平方向のブラウズモードをオン/オフにできます。詳細は、less マニュアルページを参照してください。

    shell> man less
  • -F および -X オプションを less で使用すると、出力が 1 画面に収まる場合にプログラムを終了させることができ、これはスクロールが不要なときに便利です。

    mysql> pager less -n -i -S -F -X
  • クエリー出力の取り扱いに関する非常に複雑なページャーコマンドを指定できます。

    mysql> pager cat | tee /dr1/tmp/res.txt \| tee /dr2/tmp/res2.txt | less -n -i -S

    この例では、コマンドはクエリーの結果を /dr1 および /dr2 にマウントされた 2 つの異なるファイルシステムの 2 つの異なるディレクトリ内の 2 つのファイルに送信し、さらに less を使用して結果を画面に表示します。

tee 関数と pager 関数を組み合わせることもできます。tee ファイルを有効にし、pagerless に設定してあれば、less プログラムを使って結果をブラウズしつつ、同時にすべてをファイルに追加できます。pager コマンドと一緒に使用する Unix tee と、mysql に組み込みの tee コマンドの違いは、組み込みの tee は Unix tee がなくても機能するということです。また、組み込みの tee は画面に出力されるものすべてをログに記録しますが、pager と一緒に使用される Unix tee はそこまでログに記録しません。さらに、tee ファイルのロギングは mysql 内からインタラクティブにオン/オフできます。これは一部のクエリーのみをファイルにログするときに有効です。

prompt コマンドはデフォルトの mysql> プロンプトを再構成します。プロンプトを定義するための文字列には、次の特殊なシーケンスを含めることができます。

オプション説明
\cステートメントを発行するたびにインクリメントするカウンタ
\D現在の日付 (フルで)
\dデフォルトデータベース
\hサーバーホスト
\l現在の区切り文字
\m現在の時間の分
\n改行文字
\O3 文字の形式の現在の月 (Jan、Feb、…)
\o数字形式の現在の月
\Pam/pm
\p現在の TCP/IP ポートまたはソケットファイル
\R現在の時間、24 時間表記 (0-23)
\r現在の時間、12 時間表記 (1-12)
\Sセミコロン
\s現在の時間の秒
\tタブ文字
\U

完全な user_name@host_name アカウント名

\uユーザー名
\vサーバーバージョン
\w3 文字の形式の現在の曜日 (Mon, Tue, …)
\Y現在の年 (4 桁)
\y現在の年 (2 桁)
\_スペース
\ スペース (バックスラッシュのあとにスペースがあります)
\'単一引用符
\"二重引用符
\\リテラルの \ バックスラッシュ文字
\x

x (上記にないすべての x)

プロンプトはいくつかの方法でセットできます。

  • 環境変数を使用します。MYSQL_PS1 環境変数をプロンプト文字列に設定できます。例:

    shell> export MYSQL_PS1="(\u@\h) [\d]> "
  • コマンド行オプションを使用します。コマンド行で、--prompt オプションを mysql に設定できます。例:

    shell> mysql --prompt="(\u@\h) [\d]> "(user@host) [database]>
  • オプションファイルを使用します。prompt オプションを、ホームディレクトリの /etc/my.cnf または .my.cnf ファイルなど、任意の MySQL オプションファイルの [mysql] グループに設定できます。例:

    [mysql]
    prompt=(\\u@\\h) [\\d]>\\_

    この例では、バックスラッシュが 2 つあることに注意してください。オプションファイルで prompt オプションを使用してプロンプトを設定する場合、特別なプロンプトオプションを使用するときはバックスラッシュを 2 つ使用することをお勧めします。許可されるプロンプトオプションのセットと、オプションファイルで認識される特殊なエスケープシーケンスのセットには、重複があります。(オプションファイルでのエスケープシーケンスに関するルールはセクション4.2.6「オプションファイルの使用」にリストされています。)単一のバックスラッシュを使用している場合、この重複が問題となる可能性があります。たとえば、\s は現在の秒の値としてではなく、スペースとして解釈されます。次の例は、現在の時間を HH:MM:SS> 形式で含めるように、オプションファイルでプロンプトを定義する方法を示しています。

    [mysql]
    prompt="\\r:\\m:\\s> "
  • プロンプトをインタラクティブに設定します。prompt コマンド (または \R コマンド) を使用すると、プロンプトをインタラクティブに変更できます。例:

    mysql> prompt (\u@\h) [\d]>\_PROMPT set to '(\u@\h) [\d]>\_'
    (user@host) [database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql>

4.5.1.3 mysql のロギング

Unix では、mysql クライアントはインタラクティブに実行されたステートメントを履歴ファイルにログ記録します。デフォルトでは、このファイルは .mysql_history という名前で、ユーザーのホームディレクトリにあります。別のファイルを指定する場合は、MYSQL_HISTFILE 環境変数値を設定します。

ロギングの方法

ステートメントのロギングは次のように行われます。

  • ステートメントは、インタラクティブに実行された場合のみログに記録されます。ステートメントは、たとえばファイルまたはパイプから読み取られる場合はインタラクティブではありません。--batch オプションまたは --execute オプションを使用することによって、ステートメントのロギングを抑制することもできます。

  • ステートメントは、ignore リスト内のパターンのいずれかに一致する場合には無視され、ログに記録されません。このリストについてはあとで説明します。

  • mysql は、無視されず空でない各ステートメント行を個別にログに記録します。

  • 無視されないステートメントが複数の行にまたがる場合 (終端区切り文字を含まない)、mysql は行を連結して完全なステートメントを形成し、改行をスペースに対応付け、結果に区切り文字を付け加えてログに記録します。

その結果、複数行にまたがる入力ステートメントが 2 回ログに記録されることがあります。次の入力について考えます。

mysql> SELECT -> 'Today is' -> , -> CONCAT() -> ;

この場合、mysqlSELECT'Today is',CONCAT()、および ; の各行を読み取りながらログに記録します。また、SELECT\n'Today is'\n,\nCURDATE()SELECT 'Today is' , CURDATE() に対応付けたあと、区切り文字を追加した完全なステートメントもログに記録します。したがって、ログに記録される出力には次の行があります。

SELECT
'Today is'
,
CURDATE()
;
SELECT 'Today is' , CURDATE();

MySQL 5.6.8 では、mysql はロギングのために ignore リスト内の任意のパターンに一致するステートメントを無視します。デフォルトでは、パターンのリストは "*IDENTIFIED*:*PASSWORD*" で、パスワードを参照するステートメントを無視します。パターンマッチングでは大文字と小文字を区別しません。パターン内では、特殊文字が 2 つあります。

  • ? は任意の 1 文字に一致します。

  • * はゼロ個以上の文字の任意のシーケンスに一致します。

追加のパターンを指定するには、--histignore オプションを使用するか、または MYSQL_HISTIGNORE 環境変数を設定します。(両方を指定した場合はオプション値が優先されます。)値は、コロン区切りの 1 つまたは複数のパターンのリストで、デフォルトのパターンリストに追加されます。

コマンド行で指定されたパターンは。コマンドインタプリタで特殊な扱いを受けることを防ぐために、引用符で囲むかエスケープ処理を行う必要がある場合があります。たとえば、パスワードを参照するステートメントに加えて UPDATE ステートメントおよび DELETE ステートメントのロギングを抑制するには、mysql を次のように呼び出します。

shell> mysql --histignore="*UPDATE*:*DELETE*"
履歴ファイルの制御

.mysql_history ファイルには、パスワードを含む SQL ステートメントのテキストなどの機密情報が書き込まれる場合があるため、制限付きアクセスモードで保護するようにしてください。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。

履歴ファイルを維持しない場合は、.mysql_history が存在すればまずそれを削除します。次の手法のいずれかを使用してふたたび作成されないようにします。

  • MYSQL_HISTFILE 環境変数を /dev/null に設定します。ログインするたびにこの設定が有効になるようにするには、これをシェルの起動ファイルに置きます。

  • .mysql_history/dev/null へのシンボリックリンクとして作成します。これは一度のみの実行で済みます。

    shell> ln -s /dev/null $HOME/.mysql_history

4.5.1.4 mysql サーバー側のヘルプ

mysql> help search_string

help コマンドに引数を指定した場合、mysql は、サーバー側のヘルプにアクセスして MySQL リファレンスマニュアルの内容から検索するための文字列として引数を使用します。このコマンドを適切に操作するには、mysql データベース内のヘルプテーブルがヘルプトピック情報で初期化されていることが必要です (セクション5.1.10「サーバー側のヘルプ」を参照してください)。

検索文字列に一致するものがない場合、検索は失敗に終わります。

mysql> help meNothing found
Please try to run 'help contents' for a list of all accessible topics

ヘルプカテゴリのリストを閲覧するには help contents を使用してください。

mysql> help contentsYou asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the
following categories: Account Management Administration Data Definition Data Manipulation Data Types Functions Functions and Modifiers for Use with GROUP BY Geographic Features Language Structure Plugins Storage Engines Stored Routines Table Maintenance Transactions Triggers

検索文字列に一致するものが複数ある場合は、mysql は一致するトピックのリストを表示します。

mysql> help logsMany help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following topics: SHOW SHOW BINARY LOGS SHOW ENGINE SHOW LOGS

トピックのヘルプエントリを閲覧するには、そのトピックを検索文字列として使用してください。

mysql> help show binary logsName: 'SHOW BINARY LOGS'
Description:
Syntax:
SHOW BINARY LOGS
SHOW MASTER LOGS
Lists the binary log files on the server. This statement is used as
part of the procedure described in [purge-binary-logs], that shows how
to determine which logs can be purged.
mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name | File_size |
+---------------+-----------+
| binlog.000015 | 724935 |
| binlog.000016 | 733481 |
+---------------+-----------+

検索文字列にはワイルドカード文字 % および _ を含めることができます。これらは LIKE 演算子で実行されるパターンマッチング演算と同じ意味を持ちます。たとえば、HELP rep%rep で始まるトピックのリストを返します。

mysql> HELP rep%Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics: REPAIR TABLE REPEAT FUNCTION REPEAT LOOP REPLACE REPLACE FUNCTION

4.5.1.5 テキストファイルから SQL ステートメントを実行する

mysql クライアントは、通常次のようにインタラクティブに使用されます。

shell> mysql db_name

しかし、SQL ステートメントをファイルに入れ、mysql にその入力をファイルから読み取るように指示することも可能です。そのためには、実行するステートメントを含む text_file を作成します。それから、次に示されるように mysql を起動します。

shell> mysql db_name < text_file

ファイルの最初のステートメントとして USE db_name ステートメントを配置する場合、コマンド行でデータベース名を指定する必要はありません。

shell> mysql < text_file

mysql がすでに稼働している場合は、source コマンドまたは \. コマンドを使用して SQL スクリプトファイルを実行できます。

mysql> source file_namemysql> \. file_name

スクリプトでユーザーに進行状況を表示する場合があります。このためには、次のステートメントを挿入できます。

SELECT '<info_to_display>' AS ' ';

示されたステートメントは <info_to_display> を出力します。

また、--verbose オプションを付けて mysql を呼び出すこともでき、生成される結果の前に各ステートメントが表示されるようになります。

mysql は、入力ファイルの先頭にある Unicode バイト順マーク (BOM) 文字を無視します。以前は、それらを読み取ってサーバーに送信していたため、構文エラーが発生していました。BOM が存在しても、mysql はデフォルトの文字セットを変更しません。これを行うには、--default-character-set=utf8 などのオプションを付けて mysql を呼び出します。

バッチモードの詳細は、セクション3.5「バッチモードでの MySQL の使用」を参照してください。

4.5.1.6 mysql のヒント

このセクションでは、mysql をさらに効果的に使用するテクニックを紹介します。

4.5.1.6.1 入力行の編集

mysql は入力行の編集をサポートし、現在の入力行を修正したり以前の入力行を呼び出したりできます。たとえば、「左矢印」キーおよび「右矢印」キーで現在の入力行内を横方向に移動し、「上矢印」キーおよび「下矢印」キーで以前に入力した行を上下に移動できます。「バックスペース」でカーソルの前の文字を削除でき、新しい文字を入力するとカーソルの位置に挿入されます。行を入力するには、「Enter」を押します。

Windows では、編集キーシーケンスはコンソールウィンドウでコマンドの編集に関してサポートされているものと同じです。Unix では、キーシーケンスは mysql のビルドに使用された入力ライブラリ (たとえば、libedit または readline ライブラリ) に依存します。

libedit ライブラリおよび readline ライブラリのドキュメントは、オンラインで入手できます。所定の入力ライブラリで許可されるキーシーケンスのセットを変更するには、ライブラリ起動ファイルでキーバインドを定義します。これはホームディレクトリにあるファイルで、.editrclibedit 用、.inputrcreadline 用です。

たとえば libedit では、Control+W は現在のカーソル位置の前にあるものをすべて削除し、Control+U は行全体を削除します。readline では、Control+W はカーソルの前の単語を削除し、Control+U は現在のカーソル位置の前にあるものをすべて削除します。mysqllibedit を使用してビルドされた場合は、これら 2 つのキーに関して readline の動作を好むユーザーは、.editrc ファイルに次の行を置くことができます (必要に応じてファイルを作成します)。

bind "^W" ed-delete-prev-word
bind "^U" vi-kill-line-prev

現在のキーバインドのセットを表示するには、一時的に bind のみの行を .editrc の最後に置きます。mysql は起動時にバインドを表示します。

4.5.1.6.2 Windows における Unicode のサポート

Windows は、コンソールからの読み取りおよび書き込みに、UTF-16LE に基づく API を提供します。MySQL 5.6.2 では、Windows の mysql クライアントはこれらの API を使用できます。5.6.3 では、Windows インストーラは MySQL メニューに MySQL command line client - Unicode という項目を作成します。この項目は、Unicode を使用して MySQL サーバーにコンソール経由で通信するように設定されたプロパティーで mysql クライアントを呼び出します。

このサポートを手動で利用するためには、互換性のある Unicode フォントを使用するコンソール内で mysql を実行し、デフォルト文字セットをサーバーとの通信でサポートされる Unicode 文字セットに設定します。

  1. コンソールウィンドウを開きます。

  2. コンソールウィンドウプロパティーに移動して「フォント」タブを選択し、Lucida Console またはその他の互換性のある Unicode フォントを選択します。コンソールウィンドウはデフォルトでは Unicode に不適切な DOS ラスターフォントを使用するため、これが必要です。

  3. mysql.exe--default-character-set=utf8 (または utf8mb4) オプションで実行します。utf16le は接続文字セットとしてはサポートされていないため、このオプションが必要です。

これらの変更により、mysql は Windows API を使用して、UTF-16LE を使用してコンソールと通信し、サーバーとは UTF-8 を使用して通信します。(前述のメニュー項目は、フォントと文字セットを今説明したように設定します。)

mysql を起動するたびにこれらのステップを実行しなくてもいいように、mysql.exe を呼び出すショートカットを作成できます。このショートカットは、コンソールフォントを Lucida Console またはその他の互換性のある Unicode フォントに設定し、--default-character-set=utf8 (または utf8mb4) オプションを mysql.exe に渡すようにしてください。

または、コンソールフォントの設定のみを行うショートカットを作成し、文字セットは my.ini ファイルの [mysql] グループで設定します。

[mysql]
default-character-set=utf8
4.5.1.6.3 クエリー結果を縦に表示する

クエリー結果の中には、縦表示の方が、通常の横向きの表形式よりもはるかに読みやすい場合があります。セミコロンの代わりに \G でクエリーを終了することで、クエリーを縦に表示できます。たとえば、多くの場合、改行を含む長いテキスト値は縦の出力の方がはるかに読みやすくなります。

mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G*************************** 1. row *************************** msg_nro: 3068 date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty reply: monty@no.spam.com mail_to: "Thimble Smith" <tim@no.spam.com> sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes:
Thimble> Hi. I think this is a good idea. Is anyone familiar
Thimble> with UTF-8 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.
Yes, please do that.
Regards,
Monty file: inbox-jani-1 hash: 190402944
1 row in set (0.09 sec)
4.5.1.6.4 --safe-updates オプションの使用

初心者にとって、使いやすい起動オプションは --safe-updates (または同じ効果のある --i-am-a-dummy) です。これは DELETE FROM tbl_name ステートメントを発行したが、WHERE 句を忘れてしまった場合に役立ちます。通常、このようなステートメントはテーブルからすべての行を削除します。--safe-updates を使用すると、行を特定するキー値を指定しないと、行を消去できません。これにより、事故を予防します。

--safe-updates オプションを使用すると、mysql は MySQL サーバーに接続した際に次のステートメントを発行します。

SET sql_safe_updates=1, sql_select_limit=1000, max_join_size=1000000;

セクション5.1.4「サーバーシステム変数」を参照してください。

SET ステートメントには次の効果があります。

  • UPDATE ステートメントまたは DELETE ステートメントは、WHERE 句にキーの制約を指定するか、LIMIT 句を提供するか (または両方) しないかぎり実行を許可されません。例:

    UPDATE tbl_name SET not_key_column=val WHERE key_column=val;
    UPDATE tbl_name SET not_key_column=val LIMIT 1;
  • サーバーは、ステートメントに LIMIT 句が含まれていないかぎり、すべての大規模な SELECT の結果を 1,000 行に制限します。

  • サーバーは、1,000,000 を超える行の組み合わせを確認しなければいけない可能性のある、複数テーブルの SELECT ステートメントを中止します。

1,000 および 1,000,000 以外の制限を指定するには、--select_limit オプションおよび --max_join_size オプションを使用してデフォルトをオーバーライドできます。

shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
4.5.1.6.5 mysql の自動再接続を無効にする

ステートメントの送信中にサーバーとの接続が切断された場合、mysql クライアントはただちに自動的にサーバーに一度再接続してステートメントを再度送信しようとします。ただし、mysql が再接続に成功しても、最初の接続は終了し、前セッションのオブジェクトと設定は失われます。この中には、一時テーブル、自動コミットモード、およびユーザー定義変数やセッション変数が含まれます。また、現トランザクションはロールバックします。この動作は危険な場合があります。たとえば、次の例では、サーバーはユーザーの了解なしに、最初のステートメントと 2 番目のステートメントの間にシャットダウンして再起動させられています。

mysql> SET @a=1;Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO t VALUES(@a);ERROR 2006: MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1
Current database: test
Query OK, 1 row affected (1.30 sec)
mysql> SELECT * FROM t;+------+
| a |
+------+
| NULL |
+------+
1 row in set (0.05 sec)

@a ユーザー変数は接続とともに失われ、再接続後は未定義です。接続が失われた際に、mysql がエラーで終了することが望ましい場合、mysql クライアントを --skip-reconnect オプションで起動できます。

自動再接続および再接続時の状態情報への影響の詳細は、セクション23.7.16「自動再接続動作の制御」を参照してください。

4.5.2 mysqladmin — MySQL サーバーの管理を行うクライアント

mysqladmin は管理操作を実行するためのクライアントです。サーバーの構成や現在のステータスの確認、データベースの作成および削除、およびその他の用途に使用できます。

mysqladmin は次のように起動します。

shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...

mysqladmin は次のコマンドをサポートします。コマンドの中にはコマンド名のあとに引数を取るものもあります。

  • create db_name

    db_name という名前の新しいデータベースを作成します。

  • debug

    エラーログにデバッグ情報を書き込むようにサーバーに指示します。この情報の形式と内容は変更されることがあります。

    これにはイベントスケジューラの情報が含まれます。セクション20.4.5「イベントスケジューラのステータス」を参照してください。

  • drop db_name

    db_name という名前のデータベースとそのテーブルをすべて削除します。

  • extended-status

    サーバーステータス変数とその値を表示します。

  • flush-hosts

    ホストキャッシュ内の情報をすべてフラッシュします。

  • flush-logs

    ログをすべてフラッシュします。

  • flush-privileges

    付与テーブルをリロードします (reload と同じ)。

  • flush-status

    ステータス変数をクリアします。

  • flush-tables

    テーブルをすべてフラッシュします。

  • flush-threads

    スレッドキャッシュをフラッシュします。

  • kill id,id,...

    サーバースレッドを強制終了します。複数のスレッド ID 値を指定する場合、リストにはスペースが存在してはいけません。

  • old-password new-password

    これは password コマンドと似ていますが、古い (4.1 以前) パスワードハッシュ形式を使用してパスワードを保存します。(セクション6.1.2.4「MySQL でのパスワードハッシュ」を参照してください。)

  • password new-password

    新しいパスワードを設定します。これにより、サーバーへの接続に使う mysqladmin のアカウントパスワードを new-password に変更します。したがって、次に同じアカウントを使用して mysqladmin (またはほかのクライアントプログラム) を起動するとき、新しいパスワードを指定することが必要になります。

    new-password の値がスペースまたはコマンドインタプリタにとって特殊なその他の文字を含んでいる場合、引用符で囲む必要があります。Windows では、単一引用符ではなく二重引用符を必ず使用してください。単一引用符はパスワードから取り除かれず、むしろパスワードの一部として解釈されます。例:

    shell> mysqladmin password "my new password"

    MySQL 5.6 では、password コマンドに続いて新しいパスワードを省略できます。この場合、mysqladmin はパスワード値を要求し、パスワードをコマンド行で指定するのを避けることができます。パスワード値は、passwordmysqladmin コマンド行の最後のコマンドである場合にかぎって省略できます。そうでない場合、次の引数がパスワードとみなされます。

    注意

    サーバーが --skip-grant-tables オプションを使用して起動された場合は、このコマンドを使用しないでください。パスワードの変更は適用されません。これは、同じコマンド行で password コマンドの前に flush-privileges コマンドを指定して付与テーブルを再度有効にする場合にも当てはまります (フラッシュ処理は接続後に行われるため)。ただし、mysqladmin flush-privileges コマンドを実行して付与テーブルを再度有効にしてから、個別に mysqladmin password コマンドを実行してパスワードを変更することは可能です。

  • ping

    サーバーが使用可能かどうかをチェックします。サーバーが稼働中の場合は mysqladmin のリターンステータスは 0 になり、稼働していない場合は 1 になります。Access denied のようなエラーの場合でも 0 となります。これは、サーバーは稼働しているが接続を拒否したことを意味しており、サーバーが稼働していない状態とは異なるからです。

  • processlist

    アクティブなサーバースレッドのリストを表示します。これは SHOW PROCESSLIST ステートメントの出力と同様です。--verbose オプションが指定されている場合、出力は SHOW FULL PROCESSLIST の出力と同様です。(セクション13.7.5.30「SHOW PROCESSLIST 構文」を参照してください。)

  • reload

    付与テーブルをリロードします。

  • refresh

    全テーブルをフラッシュし、ログファイルを閉じて、開きます。

  • shutdown

    サーバーを停止します。

  • start-slave

    スレーブサーバーのレプリケーションを開始します。

  • status

    短いサーバーステータスメッセージを表示します。

  • stop-slave

    スレーブサーバーのレプリケーションを停止します。

  • variables

    サーバーシステム変数とその値を表示します。

  • version

    サーバーからのバージョン情報を表示します。

すべてのコマンドは一意のプリフィクスに省略できます。例:

shell> mysqladmin proc stat+----+-------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------+-----------+----+---------+------+-------+------------------+
| 51 | monty | localhost | | Query | 0 | | show processlist |
+----+-------+-----------+----+---------+------+-------+------------------+
Uptime: 1473624 Threads: 1 Questions: 39487
Slow queries: 0 Opens: 541 Flush tables: 1
Open tables: 19 Queries per second avg: 0.0268

mysqladmin status コマンドの結果は次の値を表示します。

  • Uptime

    MySQL サーバーが稼働している秒数。

  • Threads

    アクティブスレッド (クライアント) の数です。

  • Questions

    サーバーが起動して以来クライアントから寄せられた質問 (クエリー) の数です。

  • Slow queries

    long_query_time 秒よりも時間を要したクエリーの数。セクション5.2.5「スロークエリーログ」を参照してください。

  • Opens

    サーバーによって開かれたテーブルの数。

  • Flush tables

    サーバーが実行した flush-*refresh、および reload コマンドの数です。

  • Open tables

    現在開いているテーブルの数。

Unix ソケットファイルを使用してローカルサーバーに接続する際に mysqladmin shutdown を実行した場合、mysqladmin はサーバーのプロセス ID ファイルが取り除かれるまで待ちます。これはサーバーが正しく停止したことを確認するためです。

mysqladmin は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqladmin] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.6 mysqladmin のオプション

オプション名説明導入
--bind-address指定されたネットワークインタフェースを使用して MySQL サーバーに接続5.6.1
--compressクライアントとサーバー間で送信される情報をすべて圧縮
--connect_timeout接続タイムアウトまでの秒数
--count繰り返されるコマンド実行での反復回数
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン
--default-character-setデフォルト文字セットを指定
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--enable-cleartext-plugin平文の認証プラグインを有効化5.6.7
--forceSQL エラーが発生しても続行
--helpヘルプメッセージを表示して終了
--host指定されたホスト上で MySQL サーバーに接続
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--no-beepエラー時に音を発生させない
--no-defaultsオプションファイルを読み取らない
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ
--port接続に使用する TCP/IP ポート番号
--print-defaultsデフォルトを出力
--protocol使用する接続プロトコル
--relative--sleep オプションとともに使用された場合、現在値と以前の値の差異を表示
--secure-auth古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない5.6.17
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--shutdown_timeoutサーバーのシャットダウンを待機する最大秒数
--silentサイレントモード
--sleepコマンドを反復実行し、その間に delay 秒間スリープ
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--versionバージョン情報を表示して終了
--verticalクエリー出力行を垂直形式で出力 (カラム値ごとに 1 行)
--wait接続が確立できない場合、中止せずに待機してからリトライ

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --count=N, -c N

    --sleep オプションが指定されている場合、繰り返し実行されるコマンドの反復実行の数。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o,/tmp/mysqladmin.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqladmin は通常 [client] グループおよび [mysqladmin] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqladmin[client_other] グループおよび [mysqladmin_other] グループも読み取ります。

  • --enable-cleartext-plugin

    mysql_clear_password 平文認証プラグインを有効にします。(セクション6.3.8.7「クライアント側のクリアテキスト認証プラグイン」を参照してください。)このオプションは MySQL 5.6.7 で追加されました。

  • --force, -f

    drop db_name コマンドの確認を求めません。複数のコマンドで、エラーが発生しても続けます。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-beep, -b

    サーバーへの接続に失敗するなどのエラーの際にデフォルトで鳴らされる警告音を抑制します。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにすることができます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合でも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqladmin はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqladmin がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --relative, -r

    --sleep オプションとともに使用された場合、現在値と以前の値の差異を表示します。このオプションは extended-status コマンドとのみ機能します。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --silent, -s

    サーバーとの接続が確立できない場合、警告なしで終了します。

  • --sleep=delay, -i delay

    コマンドを繰り返し実行し、その間 delay 秒間スリープします。--count オプションは反復回数を決定します。--count が指定されていない場合は、mysqladmin は中断されるまでいつまでもコマンドを実行します。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version, -V

    バージョン情報を表示して終了します。

  • --vertical, -E

    出力を縦に出力します。これは --relative と同様ですが、出力を縦に出力します。

  • --wait[=count], -w[count]

    接続が確立できない場合、中止せずに待機してからリトライします。count 値が指定されている場合、リトライ回数を示します。デフォルトは 1 回です。

--var_name=value を使用して、次の変数も設定できます。

  • connect_timeout

    接続タイムアウトまでの最大秒数。デフォルト値は 43200 秒 (12 時間) です。

  • shutdown_timeout

    サーバーのシャットダウンを待機する最大秒数。デフォルト値は 3600 秒 (1 時間) です。

4.5.3 mysqlcheck — テーブル保守プログラム

mysqlcheck クライアントでは、テーブルの保守 (テーブルの検査、修復、最適化、分析) を実行します。

各テーブルは処理中にロックされるため、ほかのセッションでは利用できません。ただし、検査操作ではテーブルは READ ロックでのみロックされます (READ ロックおよび WRITE ロックの詳細は、セクション13.3.5「LOCK TABLES および UNLOCK TABLES 構文」を参照してください)。テーブルの保守処理は、特に大きなテーブルでは長い時間を要する可能性があります。--databases オプションまたは --all-databases オプションを使用して 1 つまたは複数のデータベースに含まれるすべてのテーブルを処理する場合は、mysqlcheck の呼び出しに長い時間がかかる可能性があります。(mysql_upgrade についても同じことが言えますが、これはこのプログラムが mysqlcheck を呼び出してすべてのテーブルを検査し、必要に応じて修復するからです。)

mysqlcheck の機能は myisamchk と同様ですが、作動方法が異なります。主な作動方法の違いは、mysqlcheckmysqld サーバーが稼働中のときに使用されなければならないのに対し、myisamchk はこのサーバーが稼働していないときに使用されるべきであるという点です。mysqlcheck を使用することの利点は、テーブルの保守を行うためにサーバーを停止する必要がないことです。

mysqlcheck は SQL ステートメント CHECK TABLEREPAIR TABLEANALYZE TABLE、および OPTIMIZE TABLE をユーザーにとって便利な方法で使用します。実行する操作に対してどのステートメントを使用するか決定し、実行のためサーバーにステートメントを送信します。各ステートメントがどのストレージエンジンと機能するかは、セクション13.7.2「テーブル保守ステートメント」のステートメントの説明を参照してください。

MyISAM ストレージエンジンでは 4 つの保守処理をすべてサポートしているため、mysqlcheck を使用すると、MyISAM テーブルに対してそれらのどの保守処理も実行できます。ほかのストレージエンジンは必ずしもすべての操作をサポートしているとはかぎりません。そのような場合、エラーメッセージが表示されます。たとえば、test.tMEMORY テーブルの場合、検査しようとすると次の結果が生成されます。

shell> mysqlcheck test ttest.t
note : The storage engine for the table doesn't support check

mysqlcheck がテーブルを修復できない場合、手動でテーブルを修復する方法についてはセクション2.11.4「テーブルまたはインデックスの再作成または修復」を参照してください。たとえば、InnoDB テーブルがこれに当たります。このテーブルは CHECK TABLE で検査できますが、REPAIR TABLE で修復はできません。

注意

テーブルの修復操作を実行する前に、テーブルのバックアップを作成することをお勧めします。状況によっては、この操作のためにデータ損失が発生することがあります。考えられる原因としては、ファイルシステムのエラーなどがありますがこれに限りません。

一般的に、mysqlcheck を起動するには 3 つの方法があります。

shell> mysqlcheck [options] db_name [tbl_name ...]shell> mysqlcheck [options] --databases db_name ...shell> mysqlcheck [options] --all-databases

db_name のあとにテーブルを指定しない場合、または--databases オプションまたは --all-databases オプションを使用している場合、データベース全体が検査されます。

ほかのクライアントプログラムに比べ、mysqlcheck は特別な機能があります。テーブル検査のデフォルト動作 (--check) はバイナリの名前を変更することで変えられます。テーブルをデフォルトで修復するツールが必要な場合、mysqlrepair という名前で mysqlcheck のコピーを作成するか、mysqlrepair という名前で mysqlcheck へのシンボリックリンクを作成してください。mysqlrepair を起動すれば、テーブルが修復されます。

次の表に示す名前は、mysqlcheck のデフォルト動作を変更するために使用できます。

コマンド意味
mysqlrepairデフォルトオプションは --repair
mysqlanalyzeデフォルトオプションは --analyze
mysqloptimizeデフォルトオプションは --optimize

mysqlcheck は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlcheck] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.7 mysqlcheck のオプション

オプション名説明導入
--all-databasesデータベース内のテーブルをすべて確認
--all-in-1各データベースに対して、そのデータベースのすべてのテーブルを指定する単一のステートメントを実行
--analyzeテーブルを分析
--auto-repair確認されたテーブルが破損していた場合、自動的に修復
--bind-address指定されたネットワークインタフェースを使用して MySQL サーバーに接続5.6.1
--character-sets-dir文字セットがインストールされているディレクトリ
--checkテーブルにエラーがないか確認
--check-only-changed最後に行われた検査以降に変更されたテーブルのみをチェック
--check-upgradeCHECK TABLE を FOR UPGRADE オプションで呼び出し
--compressクライアントとサーバー間で送信される情報をすべて圧縮
--databases指定されたデータベース内のテーブルをすべて処理
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン5.6.2
--default-character-setデフォルト文字セットを指定
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--extendedテーブルをチェックして修復
--fast正しく閉じられていないテーブルのみを確認
--fix-db-namesデータベース名を 5.1 形式に変換
--fix-table-namesテーブル名を 5.1 形式に変換
--forceSQL エラーが発生しても続行
--helpヘルプメッセージを表示して終了
--host指定されたホスト上で MySQL サーバーに接続
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--medium-check--extended 操作よりも速いチェックを実行
--no-defaultsオプションファイルを読み取らない
--optimizeテーブルを最適化
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ5.6.2
--port接続に使用する TCP/IP ポート番号
--print-defaultsデフォルトを出力
--protocol使用する接続プロトコル
--quick最速のチェック方法
--repair一意ではではない一意なキー以外のほぼすべてを修正できる修復を実行
--secure-auth古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない5.6.17
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--silentサイレントモード
--skip-database実行される操作からこのデータベースを除外5.6.11
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--tables--databases オプションまたは -B オプションをオーバーライド
--use-frmMyISAM テーブルの修復操作用
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--versionバージョン情報を表示して終了
--write-binlogANALYZE ステートメント、OPTIMIZE ステートメント、REPAIR ステートメントをバイナリログに記録。--skip-write-binlog は、NO_WRITE_TO_BINLOG をこれらのステートメントに追加します。

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --all-databases, -A

    データベース内のテーブルをすべて検査します。これは、INFORMATION_SCHEMA データベースおよび performace_schema データベースがダンプされない点を除き、l--databases オプションを使用してコマンド行にすべてのデータベースを指定するのと同じです。これらは、--databases オプションで明示的に指名することでダンプできます。

  • --all-in-1, -1

    各テーブルに対してステートメントを発行する代わりに、各データベースに対して、そのデータベースから処理されるすべてのテーブルを指名する単一のステートメントを実行します。

  • --analyze, -a

    テーブルを分析します。

  • --auto-repair

    確認されたテーブルが壊れていた場合、自動的に修復します。必要な修復はすべてのテーブルが確認されたあとに実行されます。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --check, -c

    テーブルにエラーがないか確認します。これはデフォルトの動作です。

  • --check-only-changed, -C

    最後に行われた検査以降に変更されたテーブル、または適切に閉じられなかったテーブルのみを検査します。

  • --check-upgrade, -g

    CHECK TABLEFOR UPGRADE オプションで呼び出し、サーバーの現在のバージョンとの互換性のないテーブルがあるか検査します。このオプションにより、--fix-db-names オプションおよび --fix-table-names オプションが自動的に有効になります。

  • --compress

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --databases, -B

    指定されたデータベース内のテーブルをすべて処理します。通常、mysqlcheck はコマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。このオプションを使用すると、名前引数をすべてデータベース名として処理します。

    このオプションは、INFORMATION_SCHEMA データベースおよび performace_schema データベースのダンプに使用できます。これらは通常、--all-databases オプションを指定してもダンプされません。(--skip-lock-tables オプションも使用してください。)

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqlcheck は通常 [client] グループおよび [mysqlcheck] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqlcheck[client_other] グループおよび [mysqlcheck_other] グループも読み取ります。

  • --extended, -e

    テーブルの検査にこのオプションを使用している場合、100% 整合性があることが保証されますが、時間がかかります。

    このオプションを使用してテーブルを修復している場合、修復作業に時間がかかるだけでなく、大量のガベージ行を生成することもあります。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --fast, -F

    正しく閉じられていないテーブルのみを検査します。

  • --fix-db-names

    データベース名を 5.1 形式に変換します。特殊文字を含むデータベース名のみ影響を受けます。

  • --fix-table-names

    テーブル名を 5.1 形式に変換します。特殊文字を含むテーブル名のみ影響を受けます。このオプションはビューにも適用されます。

  • --force, -f

    SQL エラーが発生しても続行します。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --medium-check, -m

    --extended 操作よりも高速な検査を実行します。これはすべてのエラーの 99.99% のみを確認し、ほとんどの場合はこれで十分でしょう。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --optimize, -o

    テーブルを最適化します。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqlcheck はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqlcheck がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --quick, -q

    このオプションを使用してテーブルを検査している場合、正しくないリンクを検査するために行のスキャンを行いません。これが最速の検査方法です。

    このオプションを使用してテーブルを修復している場合、インデックスツリーのみの修復を試みます。これが最速の修復方法です。

  • --repair, -r

    一意ではないユニークキー以外のすべてを修正できる修復を実行します。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --silent, -s

    サイレントモード。エラーメッセージのみを出力します。

  • --skip-database=db_name

    指名されたデータベース (大文字小文字は区別されます) を、mysqlcheck が実行する操作に含めません。このオプションは MySQL 5.6.11 で追加されました。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --tables

    --databases オプションまたは -B オプションをおオーバーライドします。オプションに続くすべての名前引数はテーブル名とみなされます。

  • --use-frm

    MyISAM テーブルの修復操作で、.frm ファイルからテーブル構造を取得することで .MYI ヘッダーが壊れていてもテーブルが修復できます。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --verbose, -v

    冗長モード。プログラム処理のさまざまな段階についての情報を出力します。

  • --version, -V

    バージョン情報を表示して終了します。

  • --write-binlog

    このオプションはデフォルトで有効で、mysqlcheck によって生成される ANALYZE TABLEOPTIMIZE TABLE、および REPAIR TABLE の各ステートメントがバイナリログに書き込まれます。--skip-write-binlog を使用すると、ステートメントに NO_WRITE_TO_BINLOG が追加され、ログに記録されなくなります。これらのステートメントがレプリケーションスレーブに送信されるべきではない場合またはバイナリログをバックアップからのリカバリに使用している場合には、--skip-write-binlog を使用します。

4.5.4 mysqldump — データベースバックアッププログラム

mysqldump クライアントは、論理バックアップ を実行するユーティリティーで、元のスキーマオブジェクト、テーブルデータ、または両方を再現するために実行できる SQL ステートメントのセットを生成します。バックアップまたは別の SQL サーバーへの転送のため、1 つまたは複数の MySQL データベースをダンプします。mysqldump コマンドは、CSV、その他の区切り文字で区切られたテキスト、または XML 形式でも出力を生成できます。

mysqldump では、ダンプされるテーブルに対する SELECT 権限、ダンプされるビューに対する SHOW VIEW、ダンプされるトリガーに対する TRIGGER、および --single-transaction オプションが使用されない場合には LOCK TABLES が少なくとも必要です。オプションの説明に示すように、一部のオプションではその他の権限が必要な場合があります。

ダンプファイルをリロードするには、CREATE ステートメントを手動で発行してダンプされる各オブジェクトを作成するために必要な権限と同じものを持っていなければなりません。

mysqldump 出力には、データベースの照合順序を変更する ALTER DATABASE ステートメントを含めることができます。これらは、ストアドプログラムをダンプする際に文字のエンコードを維持するために使用できます。このようなステートメントを含むダンプファイルをリロードするには、影響されるデータベースに対する ALTER 権限が必要です。

パフォーマンスおよびスケーラビリティーに関する考慮事項

mysqldump の利点には、リストアする前に出力を表示して編集もできるという便利さと柔軟性があります。開発およびデータベース管理用にデータベースのクローンを作成したり、テスト用に既存のデータベースとわずかに異なるデータベースを作成したりできます。大量のデータのバックアップのための、高速でスケーラブルなソリューションを意図したものではありません。データサイズが大量の場合、バックアップのステップにかかる時間が妥当だとしても、SQL ステートメントの再現には、挿入やインデックスの作成などのディスク I/O が含まれるため、データのリストアに非常に長い時間がかかることがあります。

大規模なバックアップとリストアでは、データファイルを高速でリストアできる元の形式でコピーする、物理バックアップの方が適切です。

  • テーブルが主に InnoDB テーブルである場合、またはInnoDB テーブルと MyISAM テーブルが混在する場合は、MySQL Enterprise Backup 製品の mysqlbackup コマンドを使用することを検討してください。(Enterprise サブスクリプションの一部として含まれています。)これにより、最低限の中断でもっともパフォーマンスのよい InnoDB のバックアップを実行できます。また、MyISAM およびその他のストレージエンジンからのテーブルもバックアップでき、さまざまなバックアップシナリオに対応するための便利なオプションを多数提供します。セクション25.2「MySQL Enterprise Backup」を参照してください。

  • テーブルが主に MyISAM テーブルである場合は、代わりに mysqlhotcopy を使用することを検討してください。mysqldump のバックアップおよびリストア操作よりも優れたパフォーマンスを提供します。セクション4.6.10「mysqlhotcopy — データベースバックアッププログラム」を参照してください。

mysqldump は、テーブルの内容を 1 行ずつ取得してダンプすることも、ダンプする前にテーブルからすべての内容を取得して、メモリーにバッファリングすることもできます。大きなテーブルをダンプしている場合、メモリーへのバッファリングが問題になる場合があります。テーブルを 1 行ずつダンプする場合、--quick オプションを使用してください (または --opt を指定すれば --quick が有効になります)。--opt オプションは (したがって --quick も) デフォルトで有効なため、メモリーへのバッファリングを有効にするには、--skip-quick を使用します。

最近のバージョンの mysqldump を使用して、非常に古い MySQL サーバーにリロードされるダンプを生成する場合は、--opt オプションまたは --extended-insert オプションの代わりに --skip-opt オプションを使用します。

mysqldump の詳細は、セクション7.4「バックアップへの mysqldump の使用」を参照してください。

構文

次に示すように、一般に mysqldump を使用するには、1 つまたは複数のテーブルのセットのダンプ、1 つまたは複数の完全なデータベースのセット、または MySQL サーバー全体の 3 つの方法があります。

shell> mysqldump [options] db_name [tbl_name ...]shell> mysqldump [options] --databases db_name ...shell> mysqldump [options] --all-databases

データベース全体をダンプするには、db_name に続けてテーブルを指名しないか、または --databases オプションまたは --all-databases オプションを使用します。

使用しているバージョンの mysqldump がサポートするオプションのリストを表示するには、コマンド mysqldump --help を発行します。

オプション構文 - アルファベット順のサマリー

mysqldump は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqldump] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.8 mysqldump のオプション

オプション名説明導入
--add-drop-databaseDROP DATABASE ステートメントを CREATE DATABASE ステートメントの前に追加
--add-drop-tableDROP TABLE ステートメントを CREATE TABLE ステートメントの前に追加
--add-drop-triggerDROP TRIGGER ステートメントを CREATE TRIGGER ステートメントの前に追加
--add-locksLOCK TABLES と UNLOCK TABLES ステートメントで各テーブルダンプを囲む
--all-databasesすべてのデータベース内のすべてのテーブルをダンプ
--allow-keywordsキーワードであるカラム名の作成を許可
--apply-slave-statementsCHANGE MASTER ステートメントの前に STOP SLAVE を含め、START SLAVE を出力の最後に含める
--bind-address指定されたネットワークインタフェースを使用して MySQL サーバーに接続5.6.1
--commentsダンプファイルにコメントを追加
--compactよりコンパクトな出力を生成
--compatible古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成
--complete-insertカラム名を含む完全な INSERT ステートメントを使用
--create-optionsすべての MySQL に固有なテーブルオプションを CREATE TABLE ステートメントに含める
--databases複数のデータベースをダンプ
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン
--default-character-setデフォルト文字セットを指定
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--delayed-insertINSERT ステートメントではなく INSERT DELAYED ステートメントを書き出す
--delete-master-logsマスターレプリケーションサーバーで、ダンプ操作の実行後にバイナリログを削除
--disable-keys各テーブルについて、キーを無効にするステートメントおよび有効にするステートメントで INSERT ステートメントを囲む
--dump-date--comments が指定された場合、ダンプ日を "Dump completed on" コメントとして含める
--dump-slaveスレーブのマスターのバイナリログ座標をリストする CHANGE MASTER ステートメントを含める
--eventsダンプされたデータベースからイベントをダンプ
--extended-insert複数の VALUES リストを含む、複数行 INSERT 構文を使用
--fields-enclosed-byこのオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--fields-escaped-byこのオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--fields-optionally-enclosed-byこのオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--fields-terminated-byこのオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--flush-logsダンプを始める前に MySQL サーバーログファイルをフラッシュ
--flush-privilegesmysql データベースのダンプ後、FLUSH PRIVILEGES ステートメントを発行
--helpヘルプメッセージを表示して終了
--hex-blobバイナリカラムを 16 進変換表記法を使用してダンプ (たとえば、'abc' は 0x616263)
--host接続先のホスト (IP アドレスまたはホスト名)
--ignore-table指定されたテーブルをダンプしない
--include-master-host-port--dump-slave ともに生成された CHANGE MASTER ステートメントに MASTER_HOST/MASTER_PORT オプションを含める
--insert-ignoreINSERT ステートメントではなく INSERT IGNORE ステートメントを書き出す
--lines-terminated-byこのオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--lock-all-tablesデータベース内のテーブルをすべてロック
--lock-tablesテーブルをダンプする前にすべてロック
--log-error警告およびエラーを指名されたファイルに追加
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--master-dataバイナリログファイルの名前と場所を出力に書き込む
--max_allowed_packetサーバーとの間で送受信するパケットの最大長
--net_buffer_lengthTCP/IP とソケット通信のバッファーサイズ
--no-autocommitダンプされたテーブルごとに、INSERT ステートメントを SET autocommit = 0 ステートメントと COMMIT ステートメントで囲む
--no-create-dbこのオプションは CREATE DATABASE ステートメントを抑制
--no-create-info各ダンプされたテーブルを再作成する CREATE TABLE ステートメントを書き出さない
--no-dataテーブルの内容をダンプしない
--no-defaultsオプションファイルを読み取らない
--no-set-names--skip-set-charset と同じ
--no-tablespacesCREATE LOGFILE GROUP ステートメントおよび CREATE TABLESPACE ステートメントを出力に書き出さない
--opt--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset の短縮形。
--order-by-primary各テーブルの行を、主キーまたは最初の一意のインデックスでソートしてダンプ
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ
--port接続に使用する TCP/IP ポート番号
--print-defaultsデフォルトを出力
--protocol使用する接続プロトコル
--quickサーバーからのテーブルについて、一度に 1 行ずつ取得
--quote-names識別子を逆引用符文字で囲む
--replaceINSERT ステートメントではなく REPLACE ステートメントを書き出す
--result-file指定されたファイルに出力
--routinesダンプされたデータベースからストアドルーチン (プロシージャーおよび関数) をダンプ
--secure-auth古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない5.6.17
--set-charsetSET NAMES default_character_set を出力に追加
--set-gtid-purgedSET @@GLOBAL.GTID_PURGED を出力に追加するかどうか5.6.9
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--single-transactionこのオプションは、サーバーからデータをダンプする前に BEGIN SQL ステートメントを発行
--skip-add-drop-tableDROP TABLE ステートメントを CREATE TABLE ステートメントの前に追加しない
--skip-add-locksロックを追加しない
--skip-commentsダンプファイルにコメントを追加しない
--skip-compactよりコンパクトな出力を生成しない
--skip-disable-keysキーを無効にしない
--skip-extended-insertextended-insert をオフにする
--skip-opt--opt で設定されたオプションをオフにする
--skip-quickサーバーからのテーブルについて、一度に 1 行ずつ取得しない
--skip-quote-names識別子を引用符で囲まない
--skip-set-charsetSET NAMES ステートメントを抑制
--skip-triggersトリガーをダンプしない
--skip-tz-utctz-utc をオフにする
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--tabタブ区切りのデータファイルを生成
--tables--databases オプションまたは -B オプションをオーバーライド
--triggersダンプされた各テーブルについて、トリガーをダンプする
--tz-utcSET TIME_ZONE='+00:00' をダンプファイルに追加
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--versionバージョン情報を表示して終了
--where所定の WHERE 条件で選択された行のみダンプ
--xmlXML 出力を生成

接続オプション

mysqldump コマンドは MySQL サーバーにログインして情報を抽出します。次のオプションは、同じマシンまたはリモートシステム上の MySQL サーバーに接続する方法を指定します。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

  • --host=host_name, -h host_name

    与えられたホスト上の MySQL サーバーからデータをダンプします。デフォルトホストは localhost です。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqldump はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqldump がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

--var_name=value 構文を使用すれば、次の変数も設定できます。

  • max_allowed_packet

    クライアント/サーバー通信用のバッファーの最大サイズ。デフォルトは 24M バイト、最大は 1G バイトです。

  • net_buffer_length

    クライアント/サーバー通信用のバッファーの初期サイズ。複数行の INSERT ステートメント (--extended-insert オプションまたは --opt オプションを使用する場合など) を作成する場合、mysqldumpnet_buffer_length までの長さの行を作成します。この変数を増加させる場合は、MySQL サーバー内の net_buffer_length 変数が少なくともこの大きさであることを確認してください。

オプションファイルオプション

これらのオプションは、どのオプションファイルを読み取るかを制御するために使用されます。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqldump は通常 [client] グループおよび [mysqldump] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqldump[client_other] グループおよび [mysqldump_other] グループも読み取ります。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

DDL オプション

mysqldump の使用シナリオには、新しい MySQL インスタンス全体 (データベーステーブルを含む) のセットアップ、および既存のインスタンス内部のデータを既存のデータベースおよびテーブルで置換することが含まれます。次のオプションを使用すると、ダンプファイル内にさまざまな DDL ステートメントをエンコードすることによって、ダンプをリストアする際に何を削除し何をセットアップするのかを指定できます。

  • --add-drop-database

    DROP DATABASE ステートメントを各 CREATE DATABASE ステートメントの前に追加します。通常このオプションは、--all-databases オプションまたは --databases オプションとともに使用されます。これらのオプションのいずれかを指定しないと CREATE DATABASE ステートメントが書き込まれないからです。

  • --add-drop-table

    DROP TABLE ステートメントを各 CREATE TABLE ステートメントの前に追加します。

  • --add-drop-trigger

    DROP TRIGGER ステートメントを各 CREATE TRIGGER ステートメントの前に追加します。

  • --all-tablespaces, -Y

    NDB テーブルが使用するテーブルスペースを作成するために必要なすべての SQL ステートメントをテーブルダンプに追加します。そうしないと、この情報は mysqldump の出力には含まれません。このオプションは、現在 MySQL Cluster テーブルに対してのみ有効です。

  • --no-create-db, -n

    このオプションは、--databases オプションまたは --all-databases オプションが指定されていた場合、出力に含まれる CREATE DATABASE ステートメントを抑制します。

  • --no-create-info, -t

    ダンプされた各テーブルを再作成する CREATE TABLE ステートメントを書き込みません。

    注記

    このオプションは、ログファイルグループまたはテーブルスペースを作成するステートメントを、mysqldump 出力から除外しません。ただし、このためには --no-tablespaces オプションを使用できます。

  • --no-tablespaces, -y

    このオプションは、mysqldump の出力内のすべての CREATE LOGFILE GROUP ステートメントおよびCREATE TABLESPACE ステートメントを抑制します。

  • --replace

    INSERT ステートメントではなく REPLACE ステートメントを書き込みます。

デバッグオプション

次のオプションは、デバッグ情報を出力したり、ダンプファイルにデバッグ情報をエンコードしたり、または潜在的な問題にかかわらずダンプ操作を続行させたりします。

  • --allow-keywords

    キーワードであるカラム名の作成を許可します。これは各カラム名にテーブル名のプリフィクスを用いることで機能します。

  • --comments, -i

    プログラムバージョン、サーバーバージョン、およびホストなどの追加情報をダンプファイルに書き込みます。このオプションはデフォルトで有効となっています。この追加情報を抑制するには、--skip-comments を使用してください。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルト値は d:t:o,/tmp/mysqldump.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --dump-date

    --comments オプションが指定された場合、mysqldump はダンプの最後に次の形式でコメントを生成します。

    -- Dump completed on DATE

    ただし、別のときに取られたダンプファイルが、日付以外のデータがまったく同じでも日付のために異なって見えます。--dump-date および --skip-dump-date は、コメントに日付を追加するかどうかを制御します。デフォルトは --dump-date (日付をコメントに含める) です。--skip-dump-date は日付の出力を抑制します。

  • --force, -f

    テーブルダンプの最中に SQL エラーが発生しても続行します。

    このオプションの使い方の 1 つとして、削除されたテーブルをビュー定義が参照するために無効になっているビューを検出したときにも、mysqldump が実行を続けるようにすることです。--force を指定しないと、mysqldump はエラーメッセージで終了します。--force を使用すると、mysqldump はエラーメッセージを出力しますが、さらにビュー定義を含む SQL コメントをダンプ出力に書き込み、実行を継続します。

  • --log-error=file_name

    警告およびエラーを、指名されたファイルに追加することによってログに記録します。デフォルトでは、ロギングを行いません。

  • --skip-comments

    --comments オプションの説明を参照してください。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

ヘルプオプション

次のオプションは、mysqldump コマンド自身に関する情報を表示します。

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --version, -V

    バージョン情報を表示して終了します。

国際化オプション

次のオプションは、mysqldump コマンドが各国語の設定で文字データを表現する方法を変更します。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。文字セットが指定されていない場合、mysqldumputf8 を使用します。

  • --no-set-names, -N

    --set-charset 設定をオフにします。--skip-set-charset を指定するのと同様です。

  • --set-charset

    出力に SET NAMES default_character_set を追加します。このオプションはデフォルトで有効となっています。SET NAMES ステートメントを抑制するには、--skip-set-charset を使用してください。

レプリケーションオプション

mysqldump コマンドは、レプリケーションの構成において、空のインスタンスまたはデータを含むインスタンスをスレーブサーバーに作成するためによく使用されます。次のオプションは、レプリケーションマスターサーバーおよびスレーブサーバーでデータのダンプおよびリストアに適用されます。

  • --apply-slave-statements

    --dump-slave オプションで作成されたスレーブダンプで、STOP SLAVE ステートメントを CHANGE MASTER TO ステートメントの前に、START SLAVE ステートメントを出力の最後に、それぞれ追加します。

  • --delete-master-logs

    マスターレプリケーションサーバーで、ダンプ操作の実行後にサーバーに PURGE BINARY LOGS ステートメントを送信することにより、バイナリログを削除します。このオプションは自動的に --master-data を有効にします。

  • --dump-slave[=value]

    このオプションは、ダンプされたサーバーと同じマスターを持つスレーブとして別のサーバーをセットアップするために使用できるダンプファイルを生成するために、レプリケーションスレーブサーバーをダンプするために使用することを除き、--master-data と同様です。これにより、ダンプされたスレーブのマスターのバイナリログ座標 (ファイル名とファイル位置) を示す CHANGE MASTER TO ステートメントがダンプ出力に追加されます。これらは、スレーブがレプリケーションを開始するマスターサーバーの座標です。

    --dump-slave を使用すると、座標は --master-data オプションのようにダンプされたサーバーのものではなく使用されるマスターのものになります。さらに、このオプションを指定すると --master-data オプションが使用されている場合はオーバーライドされ、実質上無視されるようになります。

    オプション値は --master-data と同様に処理され (値を設定しないか、1 を設定すると CHANGE MASTER TO ステートメントがダンプに書き込まれ、2 を設定するとステートメントは書き込まれますが SQL コメントで囲まれます)、ほかのオプションを有効または無効にする点およびロッキングの処理において、--master-data と同様の効果があります。

    このオプションを使用すると、mysqldump はダンプ前にスレーブ SQL スレッドを終了し、ダンプ後に再起動します。

    --dump-slave とともに、--apply-slave-statements オプションおよび --include-master-host-port オプションも使用できます。

  • --include-master-host-port

    --dump-slave を使用して生成されたスレーブダンプ内の CHANGE MASTER TO ステートメントに、スレーブのマスターのホスト名および TCP/IP ポート番号の MASTER_HOST オプションおよび MASTER_PORT オプションを追加します。

  • --master-data[=value]

    マスターレプリケーションサーバーをダンプして、別のサーバーをマスターのスレーブとして設定するために使用できるダンプファイルを生成する場合に、このオプションを使用します。これにより、ダンプされたサーバーのバイナリログ座標 (ファイル名とファイル位置) を示す CHANGE MASTER TO ステートメントがダンプ出力に追加されます。これらは、ダンプファイルをスレーブにロードしたあとで、スレーブがレプリケーションを開始するマスターサーバーの座標です。

    オプションの値が 2 の場合、CHANGE MASTER TO ステートメントは SQL コメントとして書き込まれるため、情報提供の意味しかなく、ダンプファイルがリロードされるときには何の効果もありません。オプション値が 1 の場合、ステートメントはコメントとしては書き込まれず、ダンプファイルがリロードされるときに実行されます。オプション値が指定されていない場合は、デフォルト値は 1 です。

    このオプションには RELOAD 権限が必要で、バイナリログが有効にされていなければいけません。

    --master-data オプションは自動的に --lock-tables をオフにします。また、--single-transaction も指定されていない場合は、--lock-all-tables をオンにします。その場合、ダンプの最初のわずかな時間のみグローバル読み取りロックが取得されます (--single-transaction の説明を参照してください)。どの場合でも、ログに対するアクションはすべてダンプと同時に発生します。

    --dump-slave オプションを使用してマスターの既存のスレーブをダンプすることによって、スレーブをセットアップすることも可能です。--master-data は、これによってオーバーライドされ、両方のオプションが使用された場合には無視されます。

    MySQL 5.6.4 より前では、レプリケーションログテーブルのダンプにはこのオプションが必要でした (セクション17.2.2「レプリケーションリレーおよびステータスログ」を参照してください)。

  • --set-gtid-purged=value

    このオプションを使用すると、SET @@GLOBAL.gtid_purged ステートメントを出力に追加するかどうかを指定することによって、ダンプファイルに書き込まれるグローバルトランザクション ID (GTID) 情報を制御できます。

    次の表は、許可されるオプション値を示しています。デフォルト値は AUTO です。

    意味
    OFF出力に SET ステートメントを追加しません。
    ON出力に SET ステートメントを追加します。サーバーで GTID が有効になっていない場合は、エラーが発生します。
    AUTOサーバーで GTID が有効になっている場合に、出力に SET ステートメントを追加します。

    このオプションは MySQL 5.6.9 で追加されました。

形式オプション

次のオプションは、ダンプファイル全体またはダンプファイル内のある種のデータの提示方法を指定します。また、ある種のオプションの情報をダンプファイルに書き込むかどうかも制御します。

  • --compact

    よりコンパクトな出力を生成します。このオプションは、--skip-add-drop-table--skip-add-locks--skip-comments--skip-disable-keys、および --skip-set-charset オプションを有効にします。

  • --compatible=name

    古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成します。name の値は ansimysql323mysql40postgresqloraclemssqldb2maxdbno_key_optionsno_table_options、または no_field_options となります。複数の値を使用する場合は、カンマで区切ります。これらの値は、サーバー SQL モード設定用の対応するオプションと同じ意味を持っています。セクション5.1.7「サーバー SQL モード」を参照してください。

    このオプションはほかのサーバーとの互換性を保証するものではありません。現在提供されている、ダンプ出力の互換性を向上させるための SQL モード値を有効にするだけです。たとえば、--compatible=oracle はデータ型を Oracle 型に対応付けたり、Oracle コメント構文を使用したりしません。

    このオプションには、バージョン 4.1.0 以降のサーバーが必要です。それよりも古いサーバーでは、何も行われません。

  • --complete-insert, -c

    カラム名を含む、完全な INSERT ステートメントを使用します。

  • --create-options

    MySQL 固有のテーブルオプションを CREATE TABLE ステートメントに含めます。

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    これらのオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する FIELDS 句と同じ意味を持ちます。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --hex-blob

    16 進表記を使用してバイナリカラムをダンプします (たとえば、'abc'0x616263 となります)。影響を受けるデータ型は、BINARY 型、VARBINARY 型、BLOB 型および BIT です。

  • --lines-terminated-by=...

    このオプションは --tab とともに使用され、LOAD DATA INFILE の対応する LINES 句と同じ意味を持ちます。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --quote-names, -Q

    識別子 (データベース、テーブル、およびカラム名など) を ` 文字で囲みます。ANSI_QUOTES SQL モードが有効な場合、識別子は " 文字で囲まれます。このオプションはデフォルトで有効となっています。--skip-quote-names で無効にできますが、このオプションは --compatible のような --quote-names を有効にする可能性のあるオプションのあとに指定するようにしてください。

  • --result-file=file_name, -r file_name

    指定されたファイルに出力します。このオプションは、Windows 上で改行文字 \n が復帰/改行シーケンス \r\n に変換されるのを防ぐために使用します。ダンプの生成中にエラーが発生しても、結果ファイルが作成され以前の内容は上書きされます。

  • --tab=path, -T path

    タブ区切りのテキスト形式データファイルを生成します。mysqldump は、各ダンプテーブルに対して、テーブルを作成する CREATE TABLE ステートメントを含む tbl_name.sql ファイルを作成し、サーバーはそのデータを含む tbl_name.txt ファイルに書き込みます。オプション値はファイルを書き込むディレクトリです。

    注記

    このオプションは、mysqldumpmysqld サーバーと同じマシンで動作している場合にのみ使用するようにしてください。ユーザーは FILE 権限を持っている必要があり、サーバーは指定したディレクトリ内にファイルを書き込む許可を持っていなければいけません。

    デフォルトでは、.txt データファイルはカラム値の間にタブ文字、各行の最後に改行を使用する形式になります。この形式は、--fields-xxx オプションおよび --lines-terminated-by オプションを使用して明示的に指定できます。

    カラム値は、--default-character-set オプションで指定された文字セットに変換されます。

  • --tz-utc

    このオプションにより、異なるタイムゾーンのサーバー間で TIMESTAMP カラムをダンプしてリロードできるようになります。mysqldump はその接続タイムゾーンを UTC に設定し、SET TIME_ZONE='+00:00' をダンプファイルに追加します。このオプションを使用しないと、TIMESTAMP カラムはダンプ元およびリロード先のサーバーのローカルタイムゾーンでダンプおよびリロードが実行され、サーバーが異なるタイムゾーンにある場合、値が変更されます。--tz-utc は、サマータイムによる変更からも保護します。--tz-utc はデフォルトで有効です。無効にするには、--skip-tz-utc を使用します。

  • --xml, -X

    ダンプ出力および整形式 XML を書き出します。

    NULL'NULL'、および空の値: このオプションで生成される出力では、column_name という名前のカラムに関して、NULL 値、空の文字列、および文字列値 'NULL' は次のように互いに区別されます。

    値:XML 表現:
    NULL (不明な値)

    <field name="column_name" xsi:nil="true" />

    '' (空の文字列)

    <field name="column_name"></field>

    'NULL' (文字列値)

    <field name="column_name">NULL</field>

    mysql クライアントを --xml オプションを使用して実行した場合の出力も、前記のルールに従います。(セクション4.5.1.1「mysql のオプション」を参照してください。)

    mysqldump からの XML 出力には、次に示すように XML 名前空間が含まれます。

    shell> mysqldump --xml -u root world City<?xml version="1.0"?>
    <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <database name="world">
    <table_structure name="City">
    <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
    <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" />
    <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" />
    <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" />
    <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" />
    <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID"
    Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" />
    <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079"
    Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951"
    Index_length="43008" Data_free="0" Auto_increment="4080"
    Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02"
    Collation="latin1_swedish_ci" Create_options="" Comment="" />
    </table_structure>
    <table_data name="City">
    <row>
    <field name="ID">1</field>
    <field name="Name">Kabul</field>
    <field name="CountryCode">AFG</field>
    <field name="District">Kabol</field>
    <field name="Population">1780000</field>
    </row>...<row>
    <field name="ID">4079</field>
    <field name="Name">Rafah</field>
    <field name="CountryCode">PSE</field>
    <field name="District">Rafah</field>
    <field name="Population">92020</field>
    </row>
    </table_data>
    </database>
    </mysqldump>

    MySQL 5.6.5 より前では、このオプションを使用すると --routines オプションが正しく機能しませんでした。つまり、ストアドルーチン、トリガー、およびイベントは XML 形式でダンプできませんでした。(Bug #11760384、Bug #52792)

フィルタリングオプション

次のオプションは、どのような種類のスキーマオブジェクトがダンプファイルに書き出されるかを、トリガーまたはイベントなどのカテゴリによって制御したり、たとえばダンプするデータベースおよびテーブルを選択して名前によって制御したり、または WHERE 句を使用してテーブルデータから行をフィルタリングして制御したりできます。

  • --all-databases, -A

    すべてのデータベース内のすべてのテーブルをダンプします。これは、コマンド行で --databases オプションを使用してすべてのデータベース名を指定するのと同じです。

    MySQL 5.6.4 より前では、このオプションでは slave_master_info テーブルおよび slave_relay_log_info テーブル (セクション17.2.2「レプリケーションリレーおよびステータスログ」を参照してください) は含まれませんでした。

  • --databases, -B

    複数のデータベースをダンプします。通常、mysqldump は、コマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。このオプションを使用すると、名前引数をすべてデータベース名として処理します。出力には、各新しいデータベースの前に CREATE DATABASE ステートメントおよび USE ステートメントが含まれます。

  • --events, -E

    ダンプされるデータベースのイベントスケジューライベントを出力に含めます。

  • --ignore-table=db_name.tbl_name

    指定されたテーブルをダンプしません。これはデータベース名とテーブル名を両方指定する必要があります。複数のテーブルを無視するには、このオプションを複数回使用してください。このオプションを使用してビューを無視することもできます。

  • --no-data, -d

    テーブルの行情報を書き出しません (つまり、テーブルの内容をダンプしません)。これは、テーブルの CREATE TABLE ステートメントのみをダンプする場合に便利です (たとえば、ダンプファイルをロードしてテーブルの空のコピーを作成する場合など)。

  • --routines, -R

    ダンプされるデータベースのストアドルーチン (プロシージャーおよび関数) を出力に含めます。このオプションを使用するには、mysql.proc テーブルに対する SELECT 権限が必要です。--routines を使用して生成された出力は、ルーチンの再作成のため、CREATE PROCEDURE ステートメントおよび CREATE FUNCTION ステートメントを含んでいます。ただし、これらのステートメントはルーチンの作成および変更のタイムスタンプなどの属性を含みません。つまり、ルーチンがリロードされたとき、リロード時間と等しいタイムスタンプで作成されます。

    ルーチンを元のタイムスタンプ属性で再作成しなければならない場合は、--routines を使用しないでください。代わりに、mysql データベースの適切な権限を持っている MySQL アカウントを使用して、mysql.proc テーブルの内容を直接ダンプしてリロードしてください。

    MySQL 5.6.5 より前では、このオプションは、--xml オプションとともに使用した場合には何の効果もありません。(Bug #11760384、Bug #52792)

  • --tables

    --databases オプションまたは -B オプションをオーバーライドします。mysqldump は、このオプションに続く名前の引数をすべてテーブル名とみなします。

  • --triggers

    ダンプされる各テーブルのトリガーを出力に含めます。このオプションはデフォルトで有効です。--skip-triggers を使用して無効にします。

  • --where='where_condition', -w 'where_condition'

    指定された WHERE 条件で選択される行のみダンプします。条件が、スペースまたはユーザーのコマンドインタプリタにとって特別なその他の文字を含んでいる場合、条件を引用符で囲まなければなりません。

    例:

    --where="user='jimf'"
    -w"userid>1"
    -w"userid<1"

パフォーマンスオプション

次のオプションは、特にリストア操作のパフォーマンスにもっとも重要です。大規模なデータセットでは、リストア操作 (ダンプファイル内の INSERT ステートメントの処理) がもっとも時間のかかる部分です。データを迅速にリストアすることが緊急である場合、事前にステージを計画してパフォーマンスをテストします。時間単位で測定されるリストア時間に対して、InnoDB のみ、または混在するデータベースでは MySQL Enterprise Backup、または MyISAM のみのデータベースでは mysqlhotcopy など、代替のバックアップおよびリストアソリューションが望ましい場合もあります。

パフォーマンスは、主にダンプ操作に関して、トランザクションオプションにも影響されます。

  • --delayed-insert

    INSERT DELAYED 構文をサポートする非トランザクションテーブルでは、通常の INSERT ステートメントではなくそのステートメントを使用します。

    MySQL 5.6.6 では、DELAYED 挿入は非推奨であるため、このオプションは将来のリリースで削除されます。

  • --disable-keys, -K

    テーブルごとに、INSERT ステートメントを ; ステートメントと ; ステートメントで囲みます。これにより、行がすべて挿入されたあとにインデックスが作成されるため、ダンプファイルのロードが高速になります。このオプションは、MyISAM テーブルの一意でないインデックスにのみ効果があります。

  • --extended-insert, -e

    複数の VALUES リストを含む、複数行の INSERT 構文を使用します。これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。

  • --insert-ignore

    INSERT ステートメントではなく、INSERT IGNORE ステートメントを書き出します。

  • --opt

    このオプションはデフォルトで有効で、--add-drop-table--add-locks--create-options--disable-keys--extended-insert--lock-tables--quick--set-charset の組み合わせの短縮形です。高速ダンプ操作が可能になり、MySQL サーバーに迅速にリロードできるダンプファイルを生成します。

    --opt オプションはデフォルトで有効であるため、いくつかのデフォルト設定をオフにする場合のみ、この逆の --skip-opt を指定します。--opt に影響されるオプションのサブセットを選択的に有効または無効にする方法は、mysqldump オプショングループ の説明を参照してください。

  • --quick, -q

    このオプションは大規模なテーブルのダンプに便利です。これは mysqldump に対して、テーブルのすべての行のセットを取得して、書き出す前にメモリーにバッファリングするのではなく、サーバーから 1 行ずつ行を取得することを強制します。

  • --skip-opt

    --opt オプションの説明を参照してください。

トランザクションオプション

次のオプションは、エクスポートされるデータの信頼性と一貫性のために、ダンプ操作のパフォーマンスを犠牲にします。

  • --add-locks

    LOCK TABLES ステートメントと UNLOCK TABLES ステートメントで各テーブルダンプを囲みます。これにより、ダンプファイルをリロードする際の挿入の速度が向上します。セクション8.2.2.1「INSERT ステートメントの速度」を参照してください。

  • --flush-logs, -F

    ダンプを始める前に MySQL サーバーログファイルをフラッシュします。このオプションには RELOAD 権限が必要です。このオプションを --all-databases オプションと組み合わせて使用すると、ログはダンプされるデータベースごとにフラッシュされます。例外は、--lock-all-tables--master-data、または --single-transaction を使用する場合です。この場合、ログはすべてのテーブルがロックされた瞬間に対応して一度のみフラッシュされます。ダンプとログのフラッシュを正確に同時に実行するには、--flush-logs--lock-all-tables--master-data、または --single-transaction とともに使用するようにしてください。

  • --flush-privileges

    mysql データベースのダンプ後に、ダンプ出力に FLUSH PRIVILEGES ステートメントを追加します。ダンプに mysql データベースおよび mysql データベース内のデータに依存するその他のすべてのデータベースが含まれている場合には、正しいリストアのために必ずこのオプションを使用するようにしてください。

  • --lock-all-tables, -x

    データベース内のテーブルをすべてロックします。これは全ダンプの期間、グローバル読み取りロックを取得することで達成されます。このオプションにより、--single-transaction および --lock-tables は自動的にオフになります。

  • --lock-tables, -l

    ダンプされる各データベースに対して、ダンプするすべてのテーブルをダンプ前にロックします。MyISAM テーブルの場合には、並列挿入を許可するため、テーブルは READ LOCAL でロックされます。InnoDB などのトランザクションテーブルの場合は、--single-transaction はテーブルをロックする必要がまったくないため、--lock-tables よりはるかに適したオプションです。

    --lock-tables は各データベースに対して個別にテーブルをロックするため、このオプションではダンプファイル内のテーブルがデータベース間で論理的に一貫していることは保証されません。異なるデータベース内のテーブルは完全に異なる状態でダンプされることがあります。

    --opt など、一部のオプションは --lock-tables を自動的に有効にします。これをオーバーライドするには、--skip-lock-tables をオプションリストの最後に使用します。

  • --no-autocommit

    ダンプされるテーブルごとに、INSERT ステートメントを SET autocommit = 0 ステートメントと COMMIT ステートメントで囲みます。

  • --order-by-primary

    各テーブルの行を、主キーまたは最初の一意のインデックス (このようなインデックスが存在する場合) でソートしてダンプします。これは、InnoDB テーブルにロードされる MyISAM テーブルをダンプする場合に便利ですが、ダンプ操作にかかる時間がかなり長くなります。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --single-transaction

    このオプションは、データのダンプ前に、トランザクション分離モードを REPEATABLE READ に設定し、START TRANSACTION SQL ステートメントをサーバーに送信します。これは、InnoDB などのトランザクションテーブルの場合にかぎって便利です。その場合、アプリケーションをブロックすることなく、START TRANSACTION が発行された時点のデータベースの一貫した状態をダンプするからです。

    このオプションを使用する場合、一貫した状態でダンプされるのは InnoDB テーブルのみだということに留意してください。たとえば、このオプションの使用中にダンプされた MyISAM テーブルまたは MEMORY テーブルは状態が変化する可能性があります。

    --single-transaction ダンプの処理中、ダンプファイルが正当である (テーブルの内容とバイナリログ座標が正しい) ことを保証するために、ほかの接続で ALTER TABLECREATE TABLEDROP TABLERENAME TABLETRUNCATE TABLE ステートメントを使用しないようにしてください。一貫性読み取りはこれらのステートメントから分離されないため、ダンプされるテーブルでこれらを使用すると、mysqldump によって実行され、テーブルの内容を取得する SELECT が、正しくない内容を取得したり失敗したりすることがあります。

    --single-transaction オプションおよび --lock-tables オプションは相互に排他的です。これは、保留中のトランザクションが LOCK TABLES により暗黙的にコミットされるためです。

    大規模なテーブルをダンプするには、--single-transaction オプションを --quick オプションと組み合わせてください。

オプショングループ

  • --opt オプションは、高速なダンプ操作を実行するために協働するいくつかの設定をオンにします。--opt はデフォルトでオンであるため、これらの設定はすべてデフォルトでオンです。したがって、--opt を指定することは、あるとしてもまれです。代わりに、--skip-opt を指定してこれらの設定をグループとしてオフにし、そのあと、コマンド行で関連するオプションを指定して特定の設定を再度有効にできます。

  • --compact オプションは、オプションのステートメントおよびコメントが出力に現れるかどうかを制御するいくつかの設定をオフにします。この場合も、このオプションに、特定の設定を再度有効にするその他のオプションを続けたり、--skip-compact の形式を使用してすべての設定をオンにしたりできます。

グループオプションの一部を選択的に効果を有効または無効にする場合、オプションは前から後ろへの順で処理されるため、順序が重要です。たとえば、--disable-keys--lock-tables--skip-opt では意図している効果を得られません。--skip-opt だけの場合と同じになります。

データベース全体のバックアップを作成するには:

shell> mysqldump db_name > backup-file.sql

ダンプファイルをサーバーにロードするには:

shell> mysql db_name < backup-file.sql

ダンプファイルをリロードする別の方法:

shell> mysql -e "source /path-to-backup/backup-file.sql" db_name

mysqldump は、1 つの MySQL サーバーから別のサーバーにデータをコピーすることでデータベースを移入するのに非常に便利です。

shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name

複数のデータベースを 1 つのコマンドでダンプできます。

shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

すべてのデータベースをダンプするには、--all-databases オプションを使用します。

shell> mysqldump --all-databases > all_databases.sql

InnoDB テーブルに関して、mysqldump はオンラインバックアップの作成方法を提供します。

shell> mysqldump --all-databases --master-data --single-transaction > all_databases.sql

このバックアップでは、ダンプの最初で (FLUSH TABLES WITH READ LOCK を使用して) すべてのテーブルに対するグローバル読み取りロックが取得されます。このロックが取得されるとすぐに、バイナリログの座標が読み取られ、ロックが解除されます。FLUSH ステートメントが発行されたときに長い更新ステートメントが実行中の場合、MySQL サーバーはそれらのステートメントが終わるまで停止する可能性があります。そのあと、ダンプはロックがなくなり、テーブルの読み取りと書き込みを妨げることはなくなります。MySQL サーバーが受信する更新ステートメントが (実行時間の点で) 短い場合、更新の数が多くても最初のロック時間はさほど気にならないはずです。

ポイントインタイムリカバリ (または ロールフォワード、これは古いバックアップをリストアし、そのバックアップ後に発生した変更を再現する必要がある場合) は、バイナリログを交替させる (セクション5.2.4「バイナリログ」を参照してください) か、または少なくともダンプが対応しているバイナリログ座標を知っていると便利な場合があります。

shell> mysqldump --all-databases --master-data=2 > all_databases.sql

または:

shell> mysqldump --all-databases --flush-logs --master-data=2> all_databases.sql

--master-data オプションおよび --single-transaction オプションは同時に使用できます。これは、テーブルが InnoDB ストレージエンジンを使用して保存されている場合に、ポイントインタイムリカバリの前に使用するのに適したオンラインバックアップを作成する便利な方法を提供します。

バックアップ作成の詳細は、セクション7.2「データベースバックアップ方法」セクション7.3「バックアップおよびリカバリ戦略の例」を参照してください。

  • いくつかの機能を除いて --opt の効果を選択するには、除く各機能に対して --skip オプションを選択します。拡張挿入およびメモリーバッファリングを無効にするには、--opt--skip-extended-insert--skip-quick を使用します。(--opt はデフォルトでオンであるため、実際には --skip-extended-insert--skip-quick で十分です。)

  • インデックスの無効化とテーブルのロックを除くすべての機能に関して --opt を反転するには、--skip-opt--disable-keys--lock-tables を使用します。

制約

mysqldump は、デフォルトでは INFORMATION_SCHEMA データベースおよび performance_schema データベースをダンプしません。これらのいずれかをダンプするには、コマンド行で明示的に指定し、--skip-lock-tables オプションも使用します。--databases オプションでも指定できます。

mysqldump は、MySQL Cluster ndbinfo 情報データベースをダンプしません。

MySQL 5.6.6 より前では、mysqldumpmysql データベースのダンプとして general_log テーブルも slow_query_log テーブルもダンプしません。5.6.6 以降では、ダンプにはそれらのテーブルを再作成するためのステートメントが含まれているため、ダンプファイルを再ロードしたあとにそれらのテーブルが失われません。ログテーブルの内容はダンプされません。

権限が不十分なためビューのバックアップに問題が生じる場合は、セクションD.5「ビューの制約」の回避策を参照してください。

4.5.5 mysqlimport — データインポートプログラム

mysqlimport クライアントは、LOAD DATA INFILE SQL ステートメントにコマンド行インタフェースを提供します。mysqlimport に対するほとんどのオプションは、LOAD DATA INFILE 構文の句に直接対応しています。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

mysqlimport は次のように起動します。

shell> mysqlimport [options] db_nametextfile1 [textfile2 ...]

mysqlimport は、コマンド行で指定されたテキストファイルごとに、ファイル名の拡張子があればそれを取り除き、その結果をもとに、ファイル内容をインポートするテーブルの名前を決定します。たとえば、patient.txtpatient.text、および patient と名付けられたファイルはすべて patient と名付けられたテーブルにインポートされます。

mysqlimport は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlimport] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.9 mysqlimport のオプション

オプション名説明導入
--bind-address指定されたネットワークインタフェースを使用して MySQL サーバーに接続5.6.1
--columnsこのオプションはカンマによって分けられたカラム名のリストを値とします
--compressクライアントとサーバー間で送信される情報をすべて圧縮
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン5.6.2
--default-character-setデフォルト文字セットを指定
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--deleteテキストファイルをインポートする前にテーブルを空にする
--fields-enclosed-byこのオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています
--fields-escaped-byこのオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています
--fields-optionally-enclosed-byこのオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています
--fields-terminated-by-- このオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています
--forceSQL エラーが発生しても続行
--helpヘルプメッセージを表示して終了
--host指定されたホスト上で MySQL サーバーに接続
--ignore--replace オプションの説明を参照
--ignore-linesデータファイルの最初の N 行を無視
--lines-terminated-byこのオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています
--localクライアントホストから入力ファイルをローカルで読み込む
--lock-tablesテキストファイルを処理する前に、すべてのテーブルを書き込みロック
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--low-priorityテーブルロード時に LOW_PRIORITY を使用。
--no-defaultsオプションファイルを読み取らない
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ5.6.2
--port接続に使用する TCP/IP ポート番号
--print-defaultsデフォルトを出力
--protocol使用する接続プロトコル
--replace--replace および --ignore オプションは、一意のキー値に関して既存の行と重複する入力行の処理を制御
--secure-auth古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない5.6.17
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--silentエラーが発生したときのみ出力を生成
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--use-threads並列ファイルロードのスレッド数
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--versionバージョン情報を表示して終了

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --columns=column_list, -c column_list

    このオプションは、カンマで区切られたカラム名のリストを値として取ります。カラム名の順序は、データファイルのカラムとテーブルのカラムを対応付ける方法を示しています。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqlimport は通常 [client] グループおよび [mysqlimport] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqlimport[client_other] グループおよび [mysqlimport_other] グループも読み取ります。

  • --delete, -D

    テキストファイルをインポートする前にテーブルを空にします。

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    これらのオプションは LOAD DATA INFILE の対応する句と同じ意味を持っています。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --force, -f

    エラーを無視します。たとえば、テキストファイルのテーブルが存在しない場合、残ったファイルの処理を続行します。--force がない場合は、テーブルが存在しないと mysqlimport は終了します。

  • --host=host_name, -h host_name

    指定されたホスト上の MySQL サーバーにデータをインポートします。デフォルトホストは localhost です。

  • --ignore, -i

    --replace オプションの説明を参照してください。

  • --ignore-lines=N

    データファイルの最初の N 行を無視します。

  • --lines-terminated-by=...

    このオプションは LOAD DATA INFILE の対応する句と同じ意味を持っています。たとえば、復帰改行と改行のペアで終了する行を持つ Windows ファイルをインポートする場合、--lines-terminated-by="\r\n " を使用してください。(コマンドインタプリタのエスケープ処理の規則によってはバックスラッシュを 2 つ使用しなければならない場合があります。)セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --local, -L

    クライアントホストから入力ファイルをローカルで読み取ります。

  • --lock-tables, -l

    テキストファイルを処理する前に、すべてのテーブルを書き込み用にロックします。これにより、すべてのテーブルがサーバー上で同期していることが保証されます。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --low-priority

    テーブルのロード時に LOW_PRIORITY を使用します。これは、テーブルレベルロックのみを使用するストレージエンジン (MyISAMMEMORY、および MERGE) にのみ影響を与えます。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqlimport はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqlimport がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --replace, -r

    --replace オプションおよび --ignore オプションは、既存の行の一意のキー値を重複させるような入力行の処理を制御します。--replace を指定した場合、同じ一意のキー値を持つ既存の行は新しい行で置換されます。--ignore を指定した場合、既存の行の一意のキー値を重複させる入力行はスキップされます。どちらのオプションも指定しなかった場合、重複するキー値が検出されるとエラーが発生し、残りのテキストファイルは無視されます。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --silent, -s

    サイレントモード。エラーが発生したときのみ出力を生成します。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --use-threads=N

    N 個のスレッドを使用して複数のファイルを並行してロードします。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version, -V

    バージョン情報を表示して終了します。

mysqlimport の使用方法を表すサンプルのセッションを次に示します。

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' testshell> eda
100 Max Sydow
101 Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt0000000 1 0 0 \t M a x S y d o w \n 1 0
0000020 1 \t C o u n t D r a c u l a \n
0000040
shell> mysqlimport --local test imptest.txttest.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test+------+---------------+
| id | n |
+------+---------------+
| 100 | Max Sydow |
| 101 | Count Dracula |
+------+---------------+

4.5.6 mysqlshow — データベース、テーブル、およびカラム情報の表示

mysqlshow クライアントは、どのデータベース、そのテーブル、またはテーブルのカラムまたはインデックスが存在するかを迅速に確認するために使用できます。

mysqlshow は複数の SQL SHOW ステートメントに対してコマンド行インタフェースを提供します。セクション13.7.5「SHOW 構文」を参照してください。それらステートメントを直接使用することで同じ情報を得られます。たとえば、mysql クライアントプログラムからそれらを発行できます。

mysqlshow は次のように起動します。

shell> mysqlshow [options] [db_name [tbl_name [col_name]]]
  • データベースを指定しないと、データベース名のリストが表示されます。

  • テーブルを指定しないと、データベース内のすべての一致するテーブルが表示されます。

  • カラムを指定しないと、テーブル内のすべての一致するカラムとカラムの型が表示されます。

出力は、ユーザーが何らかの権限を所持しているデータベース、テーブル、またはカラムの名前のみを表示します。

最後の引数にシェルまたは SQL のワイルドカード文字 (*?%、または _) が含まれている場合、そのワイルドカードに一致する名前だけが表示されます。データベース名に下線が含まれている場合は、正しいテーブルまたはカラムのリストを取得できるように、1 つのバックスラッシュ (一部の Unix シェルでは 2 つ必要) でエスケープ処理するようにしてください。* 文字および ? 文字は、SQL の % および _ ワイルドカード文字に変換されます。これは名前に _ を含むテーブルのカラムを表示しようとした際に問題を引き起こす場合があります。なぜなら、この場合 mysqlshow はパターンに一致するテーブル名のみを表示するからです。これは、コマンド行上で最後に % を別個の引数として追加することで簡単に修正できます。

mysqlshow は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlshow] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.10 mysqlshow のオプション

オプション名説明導入
--bind-address指定されたネットワークインタフェースを使用して MySQL サーバーに接続5.6.1
--compressクライアントとサーバー間で送信される情報をすべて圧縮
--countテーブルごとの行の数を表示
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン5.6.2
--default-character-setデフォルト文字セットを指定
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--helpヘルプメッセージを表示して終了
--host指定されたホスト上で MySQL サーバーに接続
--keysテーブルインデックスを表示
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--no-defaultsオプションファイルを読み取らない
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ5.6.2
--port接続に使用する TCP/IP ポート番号
--print-defaultsデフォルトを出力
--protocol使用する接続プロトコル
--secure-auth古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない5.6.17
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--show-table-typeテーブルのタイプを示すカラムを表示
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--status各テーブルの追加情報を表示
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--versionバージョン情報を表示して終了

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --count

    テーブルごとの行の数を表示します。これは MyISAM でないテーブルでは、遅い場合があります。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqlshow は通常 [client] グループおよび [mysqlshow] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqlshow[client_other] グループおよび [mysqlshow_other] グループも読み取ります。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --keys, -k

    テーブルインデックスを表示します。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqlshow はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqlshow がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --show-table-type, -t

    SHOW FULL TABLES と同様に、テーブルの型を示すカラムを表示します。型は BASE TABLE または VIEW です。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --status, -i

    各テーブルの追加情報を表示します。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。このオプションは情報量を増加させるために複数回使用できます。

  • --version, -V

    バージョン情報を表示して終了します。

4.5.7 mysqlslap — 負荷エミュレーションクライアント

mysqlslap は MySQL サーバーのクライアント負荷をエミュレートし、各段階のタイミングをレポートする診断プログラムです。複数のクライアントがサーバーにアクセスしているかのように作動します。

mysqlslap は次のように起動します。

shell> mysqlslap [options]

--create または --query などのオプションを使用すると、SQL ステートメントを含む文字列やステートメントを含むファイルを指定できます。ファイルを指定した場合、デフォルトでは各行に 1 つのステートメントを含んでいなければなりません。(つまり、暗黙的なステートメント区切り文字は改行文字です。)異なる区切り文字を指定するには、--delimiter オプションを使用します。これにより、複数行にわたるステートメントを指定したり、1 行に複数のステートメントを配置したりできます。ファイルにコメントを含めることはできません。mysqlslap はそれらを理解しません。

mysqlslap は次の 3 段階で実行されます。

  1. テストに使用するスキーマ、テーブル、およびオプションでストアドプログラムまたはデータを作成します。この段階では、1 つのクライアント接続を使用します。

  2. 負荷テストを実行します。この段階では、多数のクライアント接続を使用できます。

  3. クリーンアップ (接続の解除、指定した場合はテーブルの削除) を実行します。この段階では、1 つのクライアント接続を使用します。

例:

50 台のクライアントがクエリーを実行し、それぞれ 200 の選択を行うような、create および query SQL ステートメントを提供します (コマンドは単一行に入力します)。

mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200

mysqlslap に、2 つの INT カラムと 3 つの VARCHAR カラムから成るテーブルを含む query SQL ステートメントを構築させます。5 台のクライアントを使ってそれぞれ 20 回ずつクエリーを実行します。テーブルを作成したり、データを挿入したりしないでください (直前のテストのスキーマとデータを使用します)。

mysqlslap --concurrency=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql

プログラムに、指定のファイルから create、insert、および query SQL ステートメントをロードするように指示します。この場合の create.sql ファイルには ';' で区切られた複数のテーブル作成ステートメントと ';' で区切られた複数の挿入ステートメントが含まれています。--query ファイルには、';' で区切られた複数のクエリーが格納されます。5 台のクライアントを使用して、すべての load ステートメントを実行してから、query ファイル内のすべてのクエリーを実行します (それぞれ 5 回ずつ)。

mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";"

mysqlslap は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlslap] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.11 mysqlslap のオプション

オプション名説明導入
--auto-generate-sqlSQL ステートメントがファイルおよびコマンドオプションを使用して指定されない場合、自動的に生成
--auto-generate-sql-add-autoincrementAUTO_INCREMENT カラムを自動生成されたテーブルに追加
--auto-generate-sql-execute-number自動的に生成するクエリーの数を指定
--auto-generate-sql-guid-primary自動生成されたテーブルに GUID ベースの主キーを追加
--auto-generate-sql-load-type自動的に生成するクエリーの数を指定
--auto-generate-sql-secondary-indexes自動生成されたテーブルに追加するセカンダリインデックスの数を指定
--auto-generate-sql-unique-query-number自動テスト用に生成する異なるクエリーの数。
--auto-generate-sql-unique-write-number--auto-generate-sql-write-number 用に生成する異なるクエリーの数
--auto-generate-sql-write-number各スレッドで実行する行挿入の回数
--commitコミットの前に実行するステートメントの数。
--compressクライアントとサーバー間で送信される情報をすべて圧縮
--concurrencySELECT ステートメントを発行する際、シミュレートするクライアントの数
--createテーブルの作成に使用するステートメントを含むファイルまたは文字列
--create-schemaテストを実行するスキーマ
--csvカンマ区切りの値の形式で出力を生成
--debugデバッグのログを書き込み
--debug-checkプログラムの終了時にデバッグ情報を出力
--debug-infoプログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth使用する認証プラグイン5.6.2
--defaults-extra-file通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file指名されたオプションファイルのみを読み取る
--defaults-group-suffixオプショングループのサフィクス値
--delimiterSQL ステートメントで使用する区切り文字
--detachN 個のステートメントが終わるごとに各接続を切り離す (閉じてからふたたび開く)
--enable-cleartext-plugin平文の認証プラグインを有効化5.6.7
--engineテーブルの作成に使用するストレージエンジン
--helpヘルプメッセージを表示して終了
--host指定されたホスト上で MySQL サーバーに接続
--iterations実行するテストの回数
--login-pathログインパスオプションを .mylogin.cnf から読み取り5.6.6
--no-defaultsオプションファイルを読み取らない
--no-dropテスト実行中に作成されたスキーマを削除しない5.6.3
--number-char-cols--auto-generate-sql が指定された場合に使用する VARCHAR カラムの数
--number-int-cols--auto-generate-sql が指定された場合に使用する INT カラムの数
--number-of-queries各クライアントのクエリー数をおよそこの数に制限
--only-printデータベースに接続しない。mysqlslap が実行したであろう内容を出力するのみ
--passwordサーバーに接続する際に使用するパスワード
--pipeWindows で、名前付きパイプを使用してサーバーに接続
--plugin-dirプラグインがインストールされているディレクトリ5.6.2
--port接続に使用する TCP/IP ポート番号
--post-queryテスト完了後に実行するステートメントを含むファイルまたは文字列
--post-systemテスト完了後に system() を使用して実行する文字列
--pre-queryテストの実施前に実行するステートメントを含むファイルまたは文字列
--pre-systemテストの実施前に system() を使用して実行する文字列
--print-defaultsデフォルトを出力
--protocol使用する接続プロトコル
--queryデータ取得のために使用する SELECT ステートメントを含むファイルまたは文字列
--secure-auth古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない5.6.17
--shared-memory-base-name共有メモリー接続に使用する共有メモリーの名前
--silentサイレントモード
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--ssl接続に SSL を有効化
--ssl-ca信頼された SSL CA のリストを含むファイルのパス
--ssl-capath信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-certPEM 形式の X509 証明書を含むファイルのパス
--ssl-cipherSSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl証明書失効リストを含むファイルのパス5.6.3
--ssl-crlpath証明書失効リストファイルを含むディレクトリのパス5.6.3
--ssl-keyPEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-certサーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--userサーバーへの接続時に使用する MySQL ユーザー名
--verbose冗長モード
--versionバージョン情報を表示して終了

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --auto-generate-sql, -a

    SQL ステートメントがファイルおよびコマンドオプションを使用して指定されない場合、自動的に生成します。

  • --auto-generate-sql-add-autoincrement

    AUTO_INCREMENT カラムを自動生成されたテーブルに追加します。

  • --auto-generate-sql-execute-number=N

    自動的に生成するクエリーの数を指定します。

  • --auto-generate-sql-guid-primary

    自動生成されたテーブルに GUID ベースの主キーを追加します。

  • --auto-generate-sql-load-type=type

    テストの負荷タイプを指定します。許可される値は、read (テーブルのスキャン)、write (テーブルに挿入)、key (主キーの読み取り)、update (主キーの更新)、または mixed (挿入とスキャンして選択が半分ずつ) です。デフォルトは mixed です。

  • --auto-generate-sql-secondary-indexes=N

    自動生成されたテーブルに追加するセカンダリインデックスの数を指定します。デフォルトでは、何も追加されません。

  • --auto-generate-sql-unique-query-number=N

    自動テスト用に生成する異なるクエリーの数。たとえば、1000 回の選択を行う key テストを実施する場合、このオプションの値を 1000 にして一意のクエリーを 1000 個実行することも、値を 50 にして異なるクエリーを 50 回行うこともできます。デフォルトは 10 です。

  • --auto-generate-sql-unique-write-number=N

    --auto-generate-sql-write-number 用に生成する異なるクエリーの数を指定します。デフォルトは 10 です。

  • --auto-generate-sql-write-number=N

    各スレッドで実行する行挿入の回数を指定します。デフォルトは 100 です。

  • --commit=N

    コミットの前に実行するステートメントの数。デフォルトは 0 (コミットは行われない) です。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --concurrency=N, -c N

    SELECT ステートメントを発行する場合に、シミュレートするクライアントの数。

  • --create=value

    テーブルの作成に使用するステートメントを含むファイルまたは文字列。

  • --create-schema=value

    テストを実行するスキーマ。

    注記

    --auto-generate-sql オプションも指定されている場合、mysqlslap はテスト実行の最後にスキーマを削除します。これを避けるには、--no-drop オプションも使用します。

  • --csv[=file_name]

    カンマ区切りの値の形式で出力を生成します。出力は指定されたファイルか、ファイルが指定されていない場合標準出力に送られます。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o,/tmp/mysqlslap.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info, -T

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-auth =plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqlslap は通常 [client] グループおよび [mysqlslap] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqlslap[client_other] グループおよび [mysqlslap_other] グループも読み取ります。

  • --delimiter=str, -F str

    ファイルまたはコマンドオプションを使用して提供される SQL ステートメントで使用される区切り文字。

  • --detach=N

    N 個のステートメントごとに各接続を切り離します (閉じてからふたたび開きます)。デフォルトは 0 (接続は切り離されない) です。

  • --enable-cleartext-plugin

    mysql_clear_password 平文認証プラグインを有効にします。(セクション6.3.8.7「クライアント側のクリアテキスト認証プラグイン」を参照してください。)このオプションは MySQL 5.6.7 で追加されました。

  • --engine=engine_name, -e engine_name

    テーブルの作成に使用するストレージエンジンを指定します。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --iterations=N, -i N

    実行するテストの回数。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-drop

    mysqlslap がテスト実行中に作成するスキーマをドロップしないようにします。このオプションは MySQL 5.6.3 で追加されました。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --number-char-cols=N, -x N

    --auto-generate-sql が指定されている場合に使用する VARCHAR カラムの数。

  • --number-int-cols=N, -y N

    --auto-generate-sql が指定されている場合に使用する INT カラムの数。

  • --number-of-queries=N

    各クライアントのクエリー数をおよそこの数に制限します。クエリーのカウントには、ステートメント区切り文字が考慮されます。たとえば、mysqlslap を次のように起動する場合、; 区切り文字が認識され、クエリー文字列の各インスタンスは 2 つのクエリーとカウントされます。その結果、(10 ではなく) 5 つの行が挿入されます。

    shell> mysqlslap --delimiter=";" --number-of-queries=10--query="use test;insert into t values(null)"
  • --only-print

    データベースには接続しません。mysqlslap は、実行したであろう内容を出力するだけです。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqlslap はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqlslap がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --post-query=value

    テスト完了後に実行するステートメントを含むファイルまたは文字列。この実行は、タイミングの目的ではカウントされません。

  • --post-system=str

    テスト完了後に system() を使用して実行する文字列。この実行は、タイミングの目的ではカウントされません。

  • --pre-query=value

    テストの実行前に実行するステートメントを含むファイルまたは文字列。この実行は、タイミングの目的ではカウントされません。

  • --pre-system=str

    テストの実行前に system() を使用して実行する文字列。この実行は、タイミングの目的ではカウントされません。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --query=value, -q value

    データ取得のため使用する SELECT ステートメントを含むファイルまたは文字列。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。このオプションは、サーバーが共有メモリー接続をサポートしている場合にのみ適用されます。

  • --silent, -s

    サイレントモード。出力はありません。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。このオプションは情報量を増加させるために複数回使用できます。

  • --version, -V

    バージョン情報を表示して終了します。

4.6 MySQL 管理プログラムおよびユーティリティープログラム

このセクションでは、管理プログラムおよびその他のユーティリティー操作を実行するプログラムについて説明します。

4.6.1 innochecksum — オフライン InnoDB ファイルチェックサムユーティリティー

innochecksum は、InnoDB ファイルのチェックサムを出力します。このツールは InnoDB テーブルスペースファイルを読み取って各ページのチェックサムを計算し、計算されたチェックサムを保存されているチェックサムと比較して不一致をレポートします。不一致はページが破損していることを示します。元は、停電後にテーブルスペースの完全性の検証を迅速化するために開発されましたが、ファイルコピーのあとにも使用できます。チェックサムの不一致があると、InnoDB は稼働中のサーバーを意図的にシャットダウンするため、本番稼働しているサーバーが破損したページに遭遇するのを待つのではなく、このツールを使用することが推奨されます。MySQL 5.6.16 では、innochecksum は 2G バイトを超えるサイズのファイルをサポートしています。以前は、innochecksum は 2G バイトまでのサイズのファイルだけをサポートしていました。

innochecksum は、サーバーがすでにオープンしているテーブルスペースファイルには使用できません。このようなファイルに関しては、CHECK TABLE を使用してテーブルスペース内のテーブルをチェックするとよいでしょう。

チェックサムの不一致が検出された場合、通常はバックアップからテーブルスペースをリストアするか、またはサーバーを起動して、mysqldump を使用してテーブルスペース内のテーブルのバックアップを作成します。

innochecksum は次のように起動します。

shell> innochecksum [options] file_name

innochecksum は次のオプションをサポートします。ページ番号を参照するオプションについては、数字はゼロベースです。

  • -c

    ファイル内のページ数のカウントを出力します。

  • -d

    デバッグモード。各ページのチェックサムを出力します。

  • -e num

    このページ番号で終了します。

  • -p num

    このページ番号のみをチェックします。

  • -s num

    このページ番号から開始します。

  • -v

    詳細モード。5 秒ごとに進行状況インジケータを出力します。

4.6.2 myisam_ftdump — 全文インデックス情報の表示

myisam_ftdumpMyISAM テーブル内の FULLTEXT インデックスに関する情報を表示します。MyISAM インデックスファイルを直接読み取るため、テーブルのあるサーバーホスト上で実行する必要があります。サーバーが稼働中の場合は、myisam_ftdump を使用する前に、必ず最初に FLUSH TABLES ステートメントを発行してください。

myisam_ftdump はインデックス全体をスキャンしてダンプします。これは特に高速ではありません。一方、単語の分布の変更頻度は高くないため、頻繁に実行する必要はありません。

myisam_ftdump は次のように起動します。

shell> myisam_ftdump [options] tbl_nameindex_num

tbl_name 引数は MyISAM テーブルの名前であるべきです。インデックスファイル (.MYI サフィクスの付いたファイル) を指名することでテーブルを指定することもできます。テーブルファイルがあるディレクトリで myisam_ftdump を起動しない場合は、テーブルまたはインデックスのファイル名の前に、テーブルのデータベースディレクトリのパス名を指定する必要があります。インデックス番号は 0 から始まります。

例: test データベースに、次の定義を持つ mytexttable という名前のテーブルが含まれるとします。

CREATE TABLE mytexttable
( id INT NOT NULL, txt TEXT NOT NULL, PRIMARY KEY (id), FULLTEXT (txt)
) ENGINE=MyISAM;

id のインデックスはインデックス 0 で、txtFULLTEXT インデックスはインデックス 1 です。作業ディレクトリが test データベースディレクトリの場合は、myisam_ftdump を次のように起動します。

shell> myisam_ftdump mytexttable 1

test データベースディレクトリへのパス名が /usr/local/mysql/data/test の場合、そのパス名を指定してテーブル名引数を指定することもできます。これは、データベースディレクトリ内で myisam_ftdump を起動しない場合役に立ちます。

shell> myisam_ftdump /usr/local/mysql/data/test/mytexttable 1

次のように、myisam_ftdump を使用して、インデックスエントリのリストを出現頻度順に生成できます。

shell> myisam_ftdump -c mytexttable 1 | sort -r

myisam_ftdump は次のオプションをサポートします。

  • --help, -h-?

    ヘルプメッセージを表示して終了します。

  • --count, -c

    1 語当たりの統計 (カウントとグローバルな重み) を計算します。

  • --dump, -d

    データオフセットや語の重みを含むインデックスをダンプします。

  • --length, -l

    長さの分布をレポートします。

  • --stats, -s

    グローバルインデックス統計をレポートします。ほかの操作が指定されていない場合、これがデフォルトの操作です。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

4.6.3 myisamchk — MyISAM テーブルメンテナンスユーティリティー

myisamchk ユーティリティーは、データベーステーブルに関する情報を取得したり、データベーステーブルのチェック、修復、または最適化を実行したりします。myisamchkMyISAM テーブル (データおよびインデックスの保存のための .MYD および .MYI ファイルを持つテーブル) に機能します。

さらに、CHECK TABLE および REPAIR TABLE ステートメントを使用して、MyISAM テーブルをチェックして修復することもできます。セクション13.7.2.2「CHECK TABLE 構文」およびセクション13.7.2.5「REPAIR TABLE 構文」を参照してください。

myisamchk をパーティション化されたテーブルに対して使用することはサポートされていません。

注意

テーブルの修復操作を実行する前に、テーブルのバックアップを作成することをお勧めします。状況によっては、この操作のためにデータ損失が発生することがあります。考えられる原因としては、ファイルシステムのエラーなどがありますがこれに限りません。

myisamchk は次のように起動します。

shell> myisamchk [options] tbl_name ...

optionsmyisamchk に実行させる内容を指定します。次のセクションで、これらについて説明します。また、myisamchk --help を起動することでオプションのリストを取得できます。

オプションを指定しないと、myisamchk はデフォルトの操作としてユーザーのテーブルをチェックします。詳細な情報を取得したり、myisamchk に修正アクションを取らせたりするには、次の議論で説明されているようにオプションを指定してください。

tbl_name は、チェックまたは修復するデータベーステーブルです。データベースディレクトリ以外で myisamchk を起動する場合は、データベースディレクトリへのパスを指定する必要があります。これは、myisamchk にはデータベースディレクトリの場所がまったくわからないからです。実際には、myisamchk は作業対象のファイルがデータベースディレクトリにあるかどうかは考慮しません。データベーステーブルに応対するファイルをほかの場所へコピーして、そこでそれらのファイルに対してリカバリ操作を行うことができます。

必要に応じて、myisamchk コマンド行で複数のテーブルを指定できます。インデックスファイル (.MYI サフィクスの付いたファイル) を指名することでテーブルを指定することもできます。これにより、パターン *.MYI を使用して。ディレクトリ内のすべてのテーブルを指定することも可能になります。たとえば、データベースディレクトリ内に居る場合、次のようにそのディレクトリ内のすべての MyISAM テーブルをチェックできます。

shell> myisamchk *.MYI

データベースディレクトリ以外の場所からは、ディレクトリへのパスを指定することですべてのテーブルをチェックできます。

shell> myisamchk /path/to/database_dir/*.MYI

MySQL データディレクトリへのパスにワイルドカードを指定することで、すべてのデータベースのすべてのテーブルをチェックすることもできます。

shell> myisamchk /path/to/datadir*.MYI

すべての MyISAM テーブルをチェックし、破損しているものを修復する場合は、次のコマンドを使用できます。

shell> myisamchk --silent --force --fast --update-state \--key_buffer_size=64M --myisam_sort_buffer_size=64M \--read_buffer_size=1M --write_buffer_size=1M \/path/to/datadir;
;
# at 4
#051024 17:24:13 server id 1 end_log_pos 98
# Position Timestamp Type Master ID Size Master Pos Flags
# 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00
# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og..............|
# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |.......C.8......|
# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |.......K...|
# Start: binlog v 4, server v 5.0.15-debug-log created 051024 17:24:13
# at startup
ROLLBACK;

現在、16 進出力には次のリストの要素が含まれます。この形式は変更される場合があります。(バイナリログの形式の詳細は、「MySQL Internals: The Binary Log」を参照してください。

  • Position: ログファイル内のバイト位置。

  • Timestamp: イベントのタイムスタンプ。示した例では、'9d fc 5c 43''051024 17:24:13' の 16 進表現です。

  • Type: イベントタイプコード。示した例では、'0f'FORMAT_DESCRIPTION_EVENT を示します。次のテーブルは可能なタイプコードのリストです。

    名前意味
    00UNKNOWN_EVENTこのイベントはログ内に存在するべきではありません。
    01START_EVENT_V3MySQL 4 より前のバージョンによって書き出されたログファイルの始めを示しています。
    02QUERY_EVENTもっとも一般的なイベントのタイプ。これらはマスターで実行されるステートメントを含んでいます。
    03STOP_EVENTマスターが停止したことを示します。
    04ROTATE_EVENTマスターが新しいログファイルにスイッチした際に書き出されます。
    05INTVAR_EVENTAUTO_INCREMENT 値、またはステートメントで LAST_INSERT_ID() 関数が使用される場合に使用されます。
    06LOAD_EVENTMySQL 3.23 で LOAD DATA INFILE 用に使用されます。
    07SLAVE_EVENT将来使用するために予約されています。
    08CREATE_FILE_EVENTLOAD DATA INFILE ステートメントに使用されます。これはそのようなステートメントの実行の始まりを示しています。スレーブ上で一時ファイルが作成されます。MySQL 4 でのみ使用されます。
    09APPEND_BLOCK_EVENTLOAD DATA INFILE ステートメントで使用されるデータを含んでいます。データはスレーブ上の一時ファイル内に保存されます。
    0aEXEC_LOAD_EVENTLOAD DATA INFILE ステートメントに使用されます。一時ファイルの内容はスレーブ上のテーブルに保存されます。MySQL 4 でのみ使用されます。
    0bDELETE_FILE_EVENTLOAD DATA INFILE ステートメントのロールバック。一時ファイルはスレーブ上で削除されるはずです。
    0cNEW_LOAD_EVENTMySQL 4 以前のバージョンで LOAD DATA INFILE に使用されます。
    0dRAND_EVENTRAND() 関数がステートメントで使用されている場合、ランダム値の情報を送信するのに使用されます。
    0eUSER_VAR_EVENTユーザー変数のレプリケーションに使用されます。
    0fFORMAT_DESCRIPTION_EVENTMySQL 5 以降のバージョンで書き出されたログファイルの始まりを示します。
    10XID_EVENTXA トランザクションのコミットを示すイベント。
    11BEGIN_LOAD_QUERY_EVENTMySQL 5 以降で LOAD DATA INFILE ステートメントに使用されます。
    12EXECUTE_LOAD_QUERY_EVENTMySQL 5 以降で LOAD DATA INFILE ステートメントに使用されます。
    13TABLE_MAP_EVENTテーブル定義の情報。MySQL 5.1.5 以降で使用されます。
    14PRE_GA_WRITE_ROWS_EVENT作成されるべき単一のテーブルの行データ。MySQL 5.1.5 から 5.1.17 で使用されます。
    15PRE_GA_UPDATE_ROWS_EVENT更新が必要な単一テーブルの行データ。MySQL 5.1.5 から 5.1.17 で使用されます。
    16PRE_GA_DELETE_ROWS_EVENT削除されるべき単一テーブルの行データ。MySQL 5.1.5 から 5.1.17 で使用されます。
    17WRITE_ROWS_EVENT作成されるべき単一のテーブルの行データ。MySQL 5.1.18 以降で使用されます。
    18UPDATE_ROWS_EVENT更新が必要な単一テーブルの行データ。MySQL 5.1.18 以降で使用されます。
    19DELETE_ROWS_EVENT削除されるべき単一テーブルの行データ。MySQL 5.1.18 以降で使用されます。
    1aINCIDENT_EVENT通常ではないことが何か起こりました。MySQL 5.1.18 で追加されました。
  • Master ID: イベントを作成したマスターのサーバー ID。

  • Size:イベントのサイズをバイトで表しています。

  • Master Pos: 元のマスターログファイル内での次のイベントの位置。

  • Flags: 16 フラグ。現在、次のフラグが使用されています。ほかのものは将来のために予約されています。

    フラグ名前意味
    01LOG_EVENT_BINLOG_IN_USE_Fログファイルは正しく閉じられました。(FORMAT_DESCRIPTION_EVENT でのみ使用されます。)FORMAT_DESCRIPTION_EVENT 内でこのフラグがセットされている場合 (フラグがたとえば '01 00' の場合)、ログファイルは適切に閉じられていません。マスターが (たとえば、停電などにより) クラッシュしたことによる場合がもっとも可能性が高くなります。
    02 将来使用するために予約されています。
    04LOG_EVENT_THREAD_SPECIFIC_Fたとえばイベントが一時テーブルを使用する場合のように、イベントが実行される接続に依存する場合にセットします (たとえば '04 00')。
    08LOG_EVENT_SUPPRESS_USE_Fイベントがデフォルトデータベースに依存していない一部の状況でセットします。

4.6.8.2 mysqlbinlog 行イベントの表示

次の例は、データの変更を指定する行イベントを mysqlbinlog が表示する方法を説明しています。これらは WRITE_ROWS_EVENTUPDATE_ROWS_EVENT、および DELETE_ROWS_EVENT タイプコードを持つイベントに対応します。--base64-output=DECODE-ROWS オプションおよび --verbose オプションを、行イベント出力に影響を与えるために使用できます。

サーバーが行ベースのバイナリロギングを使用しており、次のステートメントのシーケンスを実行するとします。

CREATE TABLE t
( id INT NOT NULL, name VARCHAR(20) NOT NULL, date DATE NULL
) ENGINE = InnoDB;
START TRANSACTION;
INSERT INTO t VALUES(1, 'apple', NULL);
UPDATE t SET name = 'pear', date = '2009-01-01' WHERE id = 1;
DELETE FROM t WHERE id = 1;
COMMIT;

デフォルトでは、mysqlbinlog は行イベントを、BINLOG ステートメントを使用して base-64 文字列としてエンコードして表示します。無関係な行を省略すると、前のステートメントシーケンスによって生成される行イベントの出力は次のようになります。

shell> mysqlbinlog log_file...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
';
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
';
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
';

行イベントを擬似 SQL ステートメントの形式のコメントして表示するには、mysqlbinlog--verbose オプションまたは -v オプションで実行します。出力には ### で始まる行が含まれます。

shell> mysqlbinlog -v log_file...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
';
### INSERT INTO test.t
### SET
### @1=1
### @2='apple'
### @3=NULL
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
';
### UPDATE test.t
### WHERE
### @1=1
### @2='apple'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
';
### DELETE FROM test.t
### WHERE
### @1=1
### @2='pear'
### @3='2009:01:01'

--verbose または -v を 2 回指定すると、各カラムのデータ型および一部のメタデータも表示されます。出力には、各カラムの変更に続いて追加のコメントが含まれます。

shell> mysqlbinlog -vv log_file...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
';
### INSERT INTO test.t
### SET
### @1=1
### @2='apple'
### @3=NULL
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
';
### UPDATE test.t
### WHERE
### @1=1
### @2='apple'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
';
### DELETE FROM test.t
### WHERE
### @1=1
### @2='pear'
### @3='2009:01:01' 

--base64-output=DECODE-ROWS オプションを使用して、行イベントに対する BINLOG ステートメントを抑制するように mysqlbinlog に指示できます。これは --base64-output=NEVER と同様ですが、行イベントが検出された場合にエラーで終了しません。--base64-output=DECODE-ROWS および --verbose の組み合わせにより、行イベントを SQL ステートメントとしてのみ表示する便利な方法が提供されます。

shell> mysqlbinlog -v --base64-output=DECODE-ROWS log_file...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
### INSERT INTO test.t
### SET
### @1=1
### @2='apple'
### @3=NULL
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
### UPDATE test.t
### WHERE
### @1=1
### @2='apple'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
### DELETE FROM test.t
### WHERE
### @1=1
### @2='pear'
### @3='2009:01:01'
注記

mysqlbinlog の出力を再実行する予定である場合は、BINLOG ステートメントを抑制するべきではありません。

--verbose が行イベントに関して生成した SQL ステートメントは、対応する BINLOG ステートメントよりもはるかに読みやすくなります。ただし、イベントを生成した元の SQL ステートメントと正確には対応しません。次の制約が適用されます。

  • 元のカラム名は失われて @N に置換されます。N はカラム番号です。

  • バイナリログでは文字セット情報は利用できません。これは文字列カラムの表示に影響します。

    • 対応するバイナリ文字列型と非バイナリ文字列型の間に区別はありません (BINARYCHARVARBINARYVARCHARBLOBTEXT)。出力では固定長文字列に対して STRING、可変長文字列に対して VARSTRING データ型が使用されます。

    • マルチバイト文字セットでは、文字当たりの最大のバイト数はバイナリログには現れないため、文字列型の長さは文字数ではなくバイト数で表示されます。たとえば、STRING(4) は次のカラム型のいずれかからの値のデータ型として使用されます。

      CHAR(4) CHARACTER SET latin1
      CHAR(2) CHARACTER SET ucs2
    • UPDATE_ROWS_EVENT 型のイベントのストレージフォーマットのため、UPDATE ステートメントは WHERE 句が SET 句の前に表示されます。

行イベントを適切に解釈するには、バイナリログの最初にある形式の記述の情報が必要です。mysqlbinlog はログの残りの部分に行イベントが含まれるかどうかは前もってわからないため、デフォルトでは出力の最初の部分に BINLOG ステートメントを使用して形式記述イベントを表示します。

バイナリログに BINLOG ステートメントを必要とするイベントが含まれないことがわかっている (つまり行イベントがない) 場合は、--base64-output=NEVER オプションを使用してこのヘッダーが書き込まれるのを回避できます。

4.6.8.3 バイナリログファイルのバックアップのための mysqlbinlog の使用

デフォルトでは、mysqlbinlog はバイナリログファイルを読み取り、その内容をテキスト形式で表示します。これにより、ファイル内のイベントが調べやすくなり、(たとえば出力を mysql への入力として使用して) それらを再実行できます。mysqlbinlog はローカルファイルシステムから直接ログファイルを読み取るか、または --read-from-remote-server オプションで、サーバーに接続してそのサーバーからバイナリログの内容を要求できます。mysqlbinlog はテキスト出力を標準出力、または --result-file=file_name オプションが指定された場合はその値で指名されるファイルに書き出すことができます。

MySQL 5.6 では、mysqlbinlog はバイナリログファイルを読み取って、同じ内容、つまりテキスト形式ではなくバイナリ形式の内容を含む新しいファイルに書き出すことができます。この機能により、バイナリログを容易に元の形式でバックアップできます。mysqlbinlog は、ログファイルのセットのバックアップを実行して最後のファイルの最後に到達したときに停止して、静的バックアップを作成できます。また、最後のログファイルの最後に到達したときにサーバーとの接続を保ち、新しいイベントが生成されるたびにコピーを継続して、連続的な (ライブ) バックアップを作成することもできます。連続的なバックアップ操作では、mysqlbinlog は接続が終了するまで (たとえばサーバーが終了するときなど)、または mysqlbinlog が強制的に終了させられるまで実行されます。接続が終了する際、スレーブレプリケーションサーバーとは異なり、mysqlbinlog は待機して再接続を試みません。サーバーの再起動後にライブバックアップを続行するには、mysqlbinlog も再起動する必要があります。

バイナリログバックアップには、mysqlbinlog を少なくとも 2 つのオプションを使用して起動する必要があります。

  • --read-from-remote-server (または -R) オプションは mysqlbinlog に、サーバーに接続してバイナリログを要求するよう指示します。(これは、マスターサーバーに接続するスレーブレプリケーションサーバーと同様です。)

  • --raw オプションは mysqlbinlog に、テキスト出力ではなく生の (バイナリ) 出力を書き出すように指示します。

--read-from-remote-server オプションに加えて、次のオプションを指定するのが一般的です。--host はサーバーが稼働している場所を示し、--user および --password などの接続オプションも必要な場合があります。

--raw とともに使用すると便利なオプションがほかにいくつかあります。

  • --stop-never: 最後のログファイルの最後に到達したあと、サーバーとの接続を維持して新しいイベントの読み取りを続行します。

  • --stop-never-slave-server-id=id: --stop-never が使用される場合に mysqlbinlog がレポートするサーバー ID。デフォルトは 65535 です。これは、スレーブサーバーまたは別の mysqlbinlog プロセスの ID との競合を避けるために使用できます。セクション4.6.8.4「mysqlbinlog サーバー ID の指定」を参照してください。

  • --result-file: あとで説明するように、出力ファイル名のプリフィクス。

mysqlbinlog でサーバーのバイナリログファイルのバックアップを行うには、サーバーに実際に存在するファイル名を指定する必要があります。名前がわからない場合は、サーバーに接続して SHOW BINARY LOGS ステートメントを使用して現在の名前を表示します。このステートメントによって次の出力が生成されるとします。

mysql> SHOW BINARY LOGS;+---------------+-----------+
| Log_name | File_size |
+---------------+-----------+
| binlog.000130 | 27459 |
| binlog.000131 | 13719 |
| binlog.000132 | 43268 |
+---------------+-----------+

この情報により、mysqlbinlog を使用して次のようにバイナリログを現在のディレクトリにバックアップできます (コマンドは 1 行に 1 つずつ入力します)。

  • binlog.000130 から binlog.000132 までの静的バックアップを行うには、次のいずれかのコマンドを使用します。

    mysqlbinlog --read-from-remote-server --host=host_name --raw binlog.000130 binlog.000131 binlog.000132
    mysqlbinlog --read-from-remote-server --host=host_name --raw --to-last-log binlog.000130

    最初のコマンドはすべてのファイル名を明示的に指定します。2 番目は最初のファイルのみを指名し、--to-last-log を使用して最後まで読み取ります。これらのコマンド間の違いは、mysqlbinlogbinlog.000132 の最後に到達する前にサーバーが binlog.000133 を開いた場合に、最初のコマンドはそれを読み取りませんが、2 番目のコマンドは読み取るという点です。

  • mysqlbinlogbinlog.000130 から既存のログファイルのコピーを開始し、その後接続を維持してサーバーが新しいイベントを生成するにつれてそれらをコピーするライブバックアップを行うには:

    mysqlbinlog --read-from-remote-server --host=host_name --raw --stop-never binlog.000130

    --stop-never を使用すると、--to-last-log オプションは暗示されているため、最後のログファイルまで読み取るようにこのオプションを指定する必要はありません。

出力ファイルの命名

--raw を使用しないと、mysqlbinlog はテキスト出力を生成し、--result-file オプションが与えられた場合は、すべての出力が書き出される単一のファイルの名前を指定します。--raw を使用すると、mysqlbinlog はサーバーから転送される各ログファイルに対して 1 つのバイナリ出力ファイルを書き出します。デフォルトでは、mysqlbinlog はファイルを現在のディレクトリに元のログファイルと同じ名前で書き出します。出力ファイル名を変更するには、--result-file オプションを使用します。--raw も指定されている場合、--result-file オプション値は出力ファイル名を変更するプリフィクスとして処理されます。

サーバーに現在 binlog.000999 以上の名前のバイナリログファイルがあるとします。mysqlbinlog --raw を使用してファイルのバックアップを行う場合、--result-file オプションは次の表に示すように出力ファイル名を生成します。--result-file の値をディレクトリパスで始まるようにすることで、ファイルを特定のディレクトリに書き出すことができます。--result-file の値がディレクトリ名のみで構成されている場合は、その値はパス名区切り文字で終わっていなければなりません。出力ファイルが存在する場合は上書きされます。

--result-file オプション出力ファイル名
--result-file=xxbinlog.000999 以上
--result-file=/tmp//tmp/binlog.000999 以上
--result-file=/tmp/x/tmp/xbinlog.000999 以上
例: mysqldump と mysqlbinlog を合わせてバックアップとリストアを行う

次の例は、mysqldumpmysqlbinlog を一緒に使用してサーバーのデータおよびバイナリログのバックアップを取る方法、およびデータの損失が生じた場合にバックアップを使用してサーバーのリストアを行う方法を示す簡単なシナリオを説明しています。例では、サーバーはホスト host_name 上で稼働し、最初のバイナリログファイルの名前は binlog.000999 であるとします。コマンドは 1 行に 1 つずつ入力します。

mysqlbinlog を使用してバイナリログのバックアップを継続的に作成します。

mysqlbinlog --read-from-remote-server --host=host_name --raw --stop-never binlog.000999

mysqldump を使用してサーバーのデータのスナップショットとしてダンプファイルを作成します。--all-databases--events、および --routines を使用してすべてのデータのバックアップを行い、--master-data=2 を使用して現在のバイナリログ座標をダンプファイルに含めます。

mysqldump --host=host_name --all-databases --events --routines --master-data=2> dump_file

必要に応じて mysqldump コマンドを定期的に実行して、新しいスナップショットを作成します。

データ損失が生じた場合 (たとえばサーバーのクラッシュなど)、直近のダンプファイルを使用してデータをリストアします。

mysql --host=host_name -u root -p < dump_file

次にバイナリログバックアップを使用して、ダンプファイル内にリストされている座標よりあとで書き出されたイベントを再実行します。ファイル内の座標が次のようになっているとします。

-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.001002', MASTER_LOG_POS=27284;

直近にバックアップされたログファイルが binlog.001004 という名前の場合、次のようにログイベントを再実行します。

mysqlbinlog --start-position=27284 binlog.001002 binlog.001003 binlog.001004 | mysql --host=host_name -u root -p

リストア操作をより容易に実行するために、または MySQL でリモート root アクセスが許可されない場合は、バックアップファイル (ダンプファイルおよびバイナリログファイル) をサーバーホストにコピーする方が簡単な場合もあります。

4.6.8.4 mysqlbinlog サーバー ID の指定

mysqlbinlog は、--read-from-remote-server オプションで呼び出された場合、MySQL サーバーに接続し、自分を証明するためにサーバー ID を指定し、サーバーからバイナリログファイルを要求します。mysqlbinlog を使用してサーバーからログファイルを要求するには、いくつかの方法があります。

  • 一連のファイルを名前を明示的に示して指定します。mysqlbinlog は、各ファイルに接続して Binlog dump コマンドを発行します。サーバーはファイルを送信して切断します。ファイルごとに 1 つの接続があります。

  • 開始ファイルと --to-last-log を指定します。mysqlbinlog はすべてのファイルに接続して Binlog dump コマンドを発行します。サーバーはすべてのファイルを送信して切断します。

  • 開始ファイルと --stop-never を指定します (これは暗黙的に --to-last-log を示します)。mysqlbinlog はすべてのファイルに対して接続して Binlog dump コマンドを発行します。サーバーはすべてのファイルを送信しますが、最後のファイルの送信後に切断しません。

--read-from-remote-server のみを使用すると、mysqlbinlog は 0 をサーバー ID として使用します。これは、要求された最後のログファイルの送信後に切断することをサーバーに指示します。

--read-from-remote-server および --stop-never を使用すると、mysqlbinlog はゼロ以外のサーバー ID を使用して接続するため、サーバーは最後のログファイルの送信後に切断しません。デフォルトではサーバー ID は 65535 ですが、--stop-never-slave-server-id で変更できます。

したがって、ファイルを要求する最初の 2 つの方法では、mysqlbinlog がサーバー ID の 0 を指定するためサーバーは切断します。--stop-never が指定された場合は、mysqlbinlog はゼロ以外のサーバー ID を指定するため切断しません。

4.6.9 mysqldumpslow — スロークエリーログファイルの要約

MySQL スロークエリーログは、実行に長い時間のかかるクエリーに関する情報を含みます (セクション5.2.5「スロークエリーログ」を参照してください)。mysqldumpslow は MySQL スロークエリーログファイルを解析して内容のサマリーを出力します。

通常、mysqldumpslow は数字の特定の値および文字列データ値以外が同様のクエリーをグループ化します。サマリーの出力を表示する際、これらの値を N および 'S'抽象化します。-a オプションおよび -n オプションを使用して、値の抽象化の動作を変更できます。

mysqldumpslow は次のように起動します。

shell> mysqldumpslow [options] [log_file ...]

mysqldumpslow は次のオプションをサポートします。

表 4.16 mysqldumpslow のオプション

オプション名説明
-aすべての数字を N に、文字列を S に抽象化しない
-n少なくとも指定された桁数の数字を抽象化
--debugデバッグ情報を書き込み
-gパターンに一致するステートメントのみを考慮
--helpヘルプメッセージを表示して終了
-hログファイル名内のサーバーのホスト名
-iサーバーインスタンスの名前
-l合計時間からロック時間を減算しない
-rソート順序を逆転
-s出力のソート方法
-t最初から指定された数だけのクエリーのみ表示
--verbose冗長モード

  • --help

    ヘルプメッセージを表示して終了します。

  • -a

    すべての数字を N に、文字列を 'S' に抽象化しません。

  • --debug, -d

    デバッグモードで実行します。

  • -g pattern

    (grep 形式の) パターンに一致するクエリーのみを考慮します。

  • -h host_name

    *-slow.log ファイル名の MySQL サーバーのホスト名。値にはワイルドカードを含めることができます。デフォルトは * (すべて一致) です。

  • -i name

    サーバーインスタンス名 (mysql.server 起動スクリプトを使用している場合)。

  • -l

    合計時間からロック時間を減算しません。

  • -n N

    少なくとも N 桁の数字を名前に抽象化します。

  • -r

    ソート順序を逆転します。

  • -s sort_type

    出力のソート方法。sort_type の値は次のリストから選択するようにしてください。

    • tat: クエリー時間または平均クエリー時間でソート

    • lal: ロック時間または平均ロック時間でソート

    • rar: 送信行数または平均送信行数でソート

    • c: カウントでソート

    デフォルトでは、mysqldumpslow は平均クエリー時間でソートします (-s at と同等)。

  • -t N

    出力内の最初の N 個のクエリーのみを表示します。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

使用例:

shell> mysqldumpslowReading mysql slow query log from /usr/local/mysql/data/mysqld51-apple-slow.log
Count: 1 Time=4.32s (4s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost insert into t2 select * from t1
Count: 3 Time=2.53s (7s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost insert into t2 select * from t1 limit N
Count: 3 Time=2.13s (6s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost insert into t1 select * from t1

4.6.10 mysqlhotcopy — データベースバックアッププログラム

注記

このユーティリティーは MySQL 5.6.20 で非推奨で、MySQL 5.7 で削除されます。

mysqlhotcopy はもともと Tim Bunce によって書かれ、提供された Perl スクリプトです。FLUSH TABLESLOCK TABLES、および cp または scp を使用してデータベースのバックアップを作成します。データベースまたは単一のテーブルのバックアップを作成するための高速な方法ですが、データベースディレクトリが置かれているのと同じマシンでしか実行できません。mysqlhotcopyMyISAM テーブルおよびARCHIVE テーブルのみに機能します。Unix で実行されます。

mysqlhotcopy を使用するには、バックアップを行うテーブルのファイルへの読み取りアクセス、これらのテーブルの SELECT 権限、RELOAD 権限 (FLUSH TABLES を実行できるように)、および LOCK TABLES 権限 (テーブルをロックできるように) を持っていなければなりません。

shell> mysqlhotcopy db_name [/path/to/new_directory]
shell> mysqlhotcopy db_name_1 ... db_name_n/path/to/new_directory

指定されたデータベース内で正規表現と一致するテーブルをバックアップします。

shell> mysqlhotcopy db_name./regex/

テーブル名の正規表現は、チルダ (~) をプリフィクスとして使用することで否定できます。

shell> mysqlhotcopy db_name./~regex/

mysqlhotcopy は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlhotcopy] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.17 mysqlhotcopy のオプション

オプション名説明
--addtodestターゲットディレクトリの名前変更をせず (存在する場合)、単にファイルを追加
--allowoldターゲットが存在する場合中止せず、_old サフィクスを追加することで名前変更
--checkpointチェックポイントエントリを挿入
--chrootmysqld が動作する chroot ジェイルのベースディレクトリ
--debugデバッグのログを書き込み
--dryrunアクションを実行せずにレポート
--flushlogすべてのテーブルがロックされたあとにログをフラッシュ
--helpヘルプメッセージを表示して終了
--host指定されたホスト上で MySQL サーバーに接続
--keepold終了後に以前の (名前変更された) ターゲットを消去しない
--methodファイルをコピーする方法
--noindicesフルインデックスファイルをバックアップに含めない
--old_serverFLUSH TABLES tbl_list WITH READ LOCK をサポートしないサーバーに接続しない
--passwordサーバーに接続する際に使用するパスワード
--port接続に使用する TCP/IP ポート番号
--quietエラー発生時以外サイレント
--regexp与えられた正規表現と一致する名前を持つデータベースをすべてコピー
--resetmasterテーブルをすべてロックしたあとにバイナリログをリセット
--resetslaveテーブルをすべてロックしたあとに master.info ファイルをリセット
--socketローカルホストへの接続で、使用する Unix ソケットファイル
--tmpdir一時ディレクトリ
--userサーバーへの接続時に使用する MySQL ユーザー名

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --addtodest

    ターゲットディレクトリの名前変更をせず (存在する場合)、単にファイルを追加します。

  • --allowold

    ターゲットが存在する場合、中止せず _old サフィクスを追加することで名前変更します。

  • --checkpoint=db_name.tbl_name

    指定されたデータベース db_name とテーブル tbl_name にチェックポイントエントリを挿入します。

  • --chroot=path

    mysqld が稼働している chroot jail のベースディレクトリ。path 値は mysqld に与えられる --chroot オプションと一致するようにしてください。

  • --debug

    デバッグ出力を有効化します。

  • --dryrun, -n

    アクションを実行せずにレポートします。

  • --flushlog

    すべてのテーブルがロックされたあとにログをフラッシュします。

  • --host=host_name, -h host_name

    ローカルサーバーへの TCP/IP 接続を行うために使用するローカルホストのホスト名。デフォルトでは、Unix ソケットファイルを使用して localhost に接続します。

  • --keepold

    終了後に以前の (名前変更された) ターゲットを削除しません。

  • --method=command

    ファイルのコピー方法 (cp または scp)。デフォルトは cp です。

  • --noindices

    MyISAM テーブルのフルインデックスファイルをバックアップに含めません。これによりバックアップを小さく、高速にできます。リロードされたテーブルのインデックスはあとで myisamchk -rq を使用して再構築できます。

  • --password=password, -ppassword

    サーバーに接続する際に使用するパスワードです。ほかの MySQL プログラムとは異なり、このオプションではパスワード値はオプションではありません。

    コマンド行でパスワードを指定することはセキュアでないとみなすべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --port=port_num, -P port_num

    ローカルサーバーへの接続時に使用する TCP/IP ポート番号。

  • --old_server

    MySQL 5.6 では、mysqlhotcopyFLUSH TABLES tbl_list WITH READ LOCK を使用してテーブルのフラッシュおよびロックを実行します。サーバーが、このステートメントが導入された 5.5.3 より古い場合は、--old_server オプションを使用します。

  • --quiet, -q

    エラー発生時以外サイレントにします。

  • --record_log_pos=db_name.tbl_name

    指定されたデータベース db_name およびテーブル tbl_name に、マスターとスレーブのステータスを記録します。

  • --regexp=expr

    与えられた正規表現と一致する名前を持つデータベースをすべてコピーします。

  • --resetmaster

    テーブルをすべてロックしたあとにバイナリログをリセットします。

  • --resetslave

    テーブルをすべてロックしたあとに、マスター情報リポジトリファイルまたはテーブルをリセットします。

  • --socket=path, -S path

    localhost への接続に使用される Unix ソケットファイル。

  • --suffix=str

    コピーされたデータベースの名前に使用するサフィクス。

  • --tmpdir=path

    一時ディレクトリ。デフォルトは /tmp です。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

--checkpoint オプションおよび --record_log_pos オプションに必要なテーブルの構造に関する情報を含めて、追加の mysqlhotcopy ドキュメントに関しては、perldoc を使用してください。

shell> perldoc mysqlhotcopy

4.6.11 mysql_convert_table_format — 指定されたストレージエンジンを使用するためのテーブルの変換

注記

このユーティリティーは MySQL 5.6.17 で非推奨で、MySQL 5.7 で削除されます。

mysql_convert_table_format は、データベース内のテーブルを、特定のストレージエンジン (デフォルトでは MyISAM) を使用するように変換します。mysql_convert_table_format は Perl で作成されており、DBI および DBD::mysql Perl モジュールがインストールされている必要があります (セクション2.13「Perl のインストールに関する注釈」を参照してください)。

mysql_convert_table_format は次のように起動します。

shell> mysql_convert_table_format [options]db_name

db_name 引数は変換されるテーブルを含むデータベースを示します。

mysql_convert_table_format は次のリストで説明するオプションをサポートします。

  • --help

    ヘルプメッセージを表示して終了します。

  • --force

    エラーが発生しても続行します。

  • --host=host_name

    指定されたホストの MySQL サーバーに接続します。

  • --password=password

    サーバーに接続する際に使用するパスワードです。ほかの MySQL プログラムとは異なり、このオプションではパスワード値はオプションではありません。

    コマンド行でパスワードを指定することはセキュアでないとみなすべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --port=port_num

    接続に使用する TCP/IP ポート番号。

  • --socket=path

    localhost への接続で使用する Unix ソケットファイル。

  • --type=engine_name

    テーブルを変換して使用するようにするべきストレージエンジンを指定します。このオプションが指定されていない場合、デフォルトは MyISAM です。

  • --user=user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --verbose

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version

    バージョン情報を表示して終了します。

4.6.12 mysql_find_rows — ファイルからの SQL ステートメントの抽出

注記

このユーティリティーは MySQL 5.6.17 で非推奨で、MySQL 5.7 で削除されます。

mysql_find_rows は、SQL ステートメントを含むファイルを読み取り、指定された正規表現に一致するステートメント、または USE db_nameSET ステートメントを含むステートメントを抽出します。このユーティリティーは、ステートメントがセミコロン (;) 文字で終了することを想定しています。

mysql_find_rows は次のように起動します。

shell> mysql_find_rows [options] [file_name ...]

file_name 引数は SQL ステートメントを含むファイル名であるべきです。ファイル名が指定されない場合、mysql_find_rows は標準入力を読み取ります。

例:

mysql_find_rows --regexp=problem_table --rows=20 < update.log
mysql_find_rows --regexp=problem_table update-log.1 update-log.2

mysql_find_rows は次のオプションをサポートします。

  • --help, --Information

    ヘルプメッセージを表示して終了します。

  • --regexp=pattern

    パターンに一致するクエリーを表示します。

  • --rows=N

    N 個のクエリーを表示したあと終了します。

  • --skip-use-db

    出力に USE db_name ステートメントを含めません。

  • --start_row=N

    この行から出力を開始します。

4.6.13 mysql_fix_extensions — テーブルファイル名の拡張子の正規化

注記

このユーティリティーは MySQL 5.6.17 で非推奨で、MySQL 5.7 で削除されます。

mysql_fix_extensions は、MyISAM (または ISAM) テーブルファイルの拡張子を標準形式に変換します。.frm.myd.myi.isd、および .ism (大文字小文字を区別しません) に一致する拡張子を持つファイルを検索し、それぞれ .frm.MYD.MYI.ISD、および .ISM に名前変更します。これは、(Windows などの) ファイル名の大文字と小文字を区別しないシステムから、ファイル名の大文字と小文字を区別するシステムにファイルを転送したあとで便利です。

mysql_fix_extensions は次のように起動します。ここで data_dir は MySQL データディレクトリへのパス名です。

shell> mysql_fix_extensions data_dir

4.6.14 mysql_setpermission — 付与テーブルに許可をインタラクティブに設定

注記

このユーティリティーは MySQL 5.6.17 で非推奨で、MySQL 5.7 で削除されます。

mysql_setpermission はもともと Luuk de Boer によって作成および提供された Perl スクリプトです。それは MySQL 付与テーブルに許可をインタラクティブに設定します。mysql_setpermission は Perl で記述され、DBI および DBD::mysql Perl モジュールがインストールされていることを必要とします (セクション2.13「Perl のインストールに関する注釈」を参照してください)。

mysql_setpermission は次のように起動します。

shell> mysql_setpermission [options]

options は、ヘルプメッセージを表示するための --help、または MySQL サーバーへの接続方法を示すオプションにしてください。付与テーブル内の既存の許可を変更する場合は、接続するときに使用されるアカウントによって、保有している許可が決定されます。

mysql_setpermissions は、ユーザーのホームディレクトリに .my.cnf ファイルが存在する場合は、そこから [client] グループおよび [perl] グループのオプションも読み取ります。

mysql_setpermission は次のオプションをサポートします。

  • --help

    ヘルプメッセージを表示して終了します。

  • --host=host_name

    指定されたホストの MySQL サーバーに接続します。

  • --password=password

    サーバーに接続する際に使用するパスワードです。ほかの MySQL プログラムとは異なり、このオプションではパスワード値はオプションではありません。

    コマンド行でパスワードを指定することはセキュアでないとみなすべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --port=port_num

    接続に使用する TCP/IP ポート番号。

  • --socket=path

    localhost への接続で使用する Unix ソケットファイル。

  • --user=user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

4.6.15 mysql_waitpid — プロセスを強制終了して終了を待機

mysql_waitpid はプロセスに対して終了するように信号を送信して、そのプロセスの終了を待機します。kill() システムコールおよび Unix シグナルを使用するため、Unix および Unix 類似のシステムで動作します。

このプログラムは MySQL 5.6.19 で非推奨となり、MySQL 5.7 で削除されています。

mysql_waitpid は次のように起動します。

shell> mysql_waitpid [options] pidwait_time

mysql_waitpidpid で特定されるプロセスにシグナル 0 を送信し、プロセスの終了を最大 wait_time 秒まで待機します。pid および wait_time は正の整数でなければなりません。

プロセスが待機時間内に終了するか、プロセスが存在しない場合は、mysql_waitpid は 0 を返します。そうでない場合は 1 を返します。

kill() システムコールでシグナル 0 を処理できない場合、mysql_waitpid() は代わりにシグナル 1 を使用します。

mysql_waitpid は次のオプションをサポートします。

  • --help, -?, -I

    ヘルプメッセージを表示して終了します。

  • --verbose, -v

    冗長モード。シグナル 0 を使用できず、代わりにシグナル 1 を使用した場合に警告を表示します。

  • --version, -V

    バージョン情報を表示して終了します。

4.6.16 mysql_zap — パターンに一致するプロセスを強制終了

mysql_zap は、パターンに一致するプロセスを強制終了します。ps コマンドおよび Unix シグナルを使用するため、Unix および Unix 類似のシステムで動作します。

このプログラムは MySQL 5.6.19 で非推奨となり、MySQL 5.7 で削除されています。

mysql_zap は次のように起動します。

shell> mysql_zap [-signal] [-?Ift] pattern

プロセスは ps コマンドからの出力行にパターンが含まれている場合に一致します。デフォルトでは、mysql_zap は各プロセスに対して確認を要求します。プロセスを強制終了するには ymysql_zap を終了するには q で応答します。その他の応答に対しては、mysql_zap はプロセスの強制終了を試みません。

-signal オプションが指定された場合は、各プロセスに送信するシグナルの名前または数字を指定します。そうでない場合は、mysql_zap はまず TERM (シグナル 15)、次に KILL (シグナル 9)を試します。

mysql_zap は次の追加オプションをサポートします。

  • --help, -?, -I

    ヘルプメッセージを表示して終了します。

  • -f

    強制モード。mysql_zap は各プロセスを確認なしで強制終了しようとします。

  • -t

    テストモード。各プロセスの情報を表示しますが強制終了はしません。

4.7 MySQL プログラム開発ユーティリティー

4.7.1 msql2mysql — mSQL プログラムを MySQL で使用するために変換
4.7.2 mysql_config — クライアントのコンパイル用オプションの表示
4.7.3 my_print_defaults — オプションファイルからのオプションの表示
4.7.4 resolve_stack_dump — 数値スタックトレースダンプをシンボルに解決

このセクションでは、MySQL プログラムを開発する際に有用であると思われるいくつかのユーティリティーについて説明します。

シェルスクリプトで my_print_defaults プログラムを使用して、オプションファイルを解析し、所定のプログラムがどのオプションを使用するかを表示できます。次の例は、[client] グループおよび [mysql] グループで検出されたオプションを表示するように指示された場合に、my_print_defaults が生成するであろう出力を示しています。

shell> my_print_defaults client mysql--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash

開発者へのメモ: オプションファイルの処理は、単にコマンド行引数の前に適切なグループ内のすべてのオプションを処理することによって、C クライアントライブラリに実装されています。これは、複数回指定されたオプションの最後のインスタンスを使用するプログラムではうまく機能します。複数指定されたオプションをこの方法で処理するが、オプションファイルを読み取らない C プログラムまたは C++ プログラムがある場合は、その機能を与えるために 2 行のみを追加する必要があります。標準 MySQL クライアントの任意のソースコードをチェックして、その方法を確認します。

MySQL へのほかのいくつかの言語インタフェースは C クライアントライブラリに基づいており、そのうちのいくつかはオプションファイルの内容にアクセスする方法を提供します。これらには、Perl および Python が含まれます。詳細は、使用するインタフェースのドキュメントを参照してください。

4.7.1 msql2mysql — mSQL プログラムを MySQL で使用するために変換

注記

このユーティリティーは MySQL 5.6.17 で非推奨で、MySQL 5.7 で削除されます。

MySQL C API は最初、mSQL データベースシステムのものに非常に類似するように開発されました。このため mSQL プログラムは、C API 関数の名前を変えることによって MySQL と一緒に使用するために比較的容易に変換できることが多くあります。

msql2mysql ユーティリティーは、mSQL C API 関数呼び出しを MySQL の同等の関数呼び出しに変換します。msql2mysql は入力ファイルを直接変換するため、変換する前にオリジナルのコピーを作成してください。たとえば、msql2mysql は次のように使用します。

shell> cp client-prog.c client-prog.c.origshell> msql2mysql client-prog.cclient-prog.c converted

そのあと client-prog.c を調べ、必要に応じて変換後の修正を行なってください。

msql2mysql は関数名の置換を実行するために replace ユーティリティーを使います。セクション4.8.2「replace — 文字列置換ユーティリティー」を参照してください。

4.7.2 mysql_config — クライアントのコンパイル用オプションの表示

mysql_config は、MySQ クライアントをコンパイルして MySQL に接続するのに有用な情報を提供します。シェルスクリプトであるため、Unix および Unix 類似システムでのみ使用可能です。

mysql_config は次のオプションをサポートします。

  • --cflags

    libmysqlclient ライブラリのコンパイルに使用される、インクルードファイルを検索するための C コンパイラフラグおよび重要なコンパイラフラグおよび定義。返されるオプションは、ライブラリが作成されたときに使用された特定のコンパイラに結びついており、ユーザー自身のコンパイラ設定ではクラッシュする場合があります。インクルードパスのみを含むより移植性の高いオプションには、--include を使用します。

  • --cxxflags

    --cflags と同様ですが、C++ コンパイラフラグ用です。このオプションは MySQL 5.6.4 で追加されました。

  • --include

    MySQL インクルードファイルを検出するためのコンパイラオプション。

  • --libmysqld-libs, --embedded

    MySQL 組み込みサーバーにリンクするために必要なライブラリおよびオプション。

  • --libs

    MySQL クライアントライブラリにリンクするために必要なライブラリおよびオプション。

  • --libs_r

    スレッドセーフな MySQL クライアントライブラリにリンクするために必要なライブラリおよびオプション。In MySQL 5.6 ではすべてのクライアントライブラリはスレッドセーフであるため、このオプションを使用する必要はありません。すべての場合に --libs オプションを使用できます。

  • --plugindir

    MySQL の構成時に定義される、デフォルトのプラグインディレクトリパス名。

  • --port

    MySQL の構成時に定義される、デフォルトの TCP/IP ポート番号。

  • --socket

    MySQL の構成時に定義される、デフォルトの Unix ソケットファイル。

  • --version

    MySQL 配布のバージョン番号。

mysql_config をオプションなしで呼び出すと、サポートされるすべてのオプションおよびそれらの値のリストが表示されます。

shell> mysql_configUsage: /usr/local/mysql/bin/mysql_config [options]
Options: --cflags [-I/usr/local/mysql/include/mysql -mcpu=pentiumpro] --include [-I/usr/local/mysql/include/mysql] --libs [-L/usr/local/mysql/lib/mysql -lmysqlclient -lpthread -lm -lrt -lssl -lcrypto -ldl] --libs_r [-L/usr/local/mysql/lib/mysql -lmysqlclient_r -lpthread -lm -lrt -lssl -lcrypto -ldl] --socket [/tmp/mysql.sock] --port [3306] --version [5.6.11] --libmysqld-libs [-L/usr/local/mysql/lib/mysql -lmysqld -lpthread -lm -lrt -lssl -lcrypto -ldl -lcrypt]

コマンド行で、逆引用符を使用して mysql_config を使用して、特定のオプションに対して生成される出力を含めることができます。たとえば。MySQL クライアントプログラムのコンパイルおよびリンクを行うには、mysql_config を次のように使用します。

shell> gcc -c `mysql_config --cflags` progname.cshell> gcc -o progname progname.o `mysql_config --libs`

4.7.3 my_print_defaults — オプションファイルからのオプションの表示

my_print_defaults はオプションファイルのオプショングループ内にあるオプションを表示します。出力は指定されたオプショングループを読み取るプログラムによって使用されるオプションを示します。たとえば、mysqlcheck プログラムは [mysqlcheck] および [client] のオプショングループを読み取ります。標準オプションファイル内のこれらのグループに存在するオプションを確認するには、my_print_defaults を次のように起動します。

shell> my_print_defaults mysqlcheck client--user=myusername
--password=secret
--host=localhost

出力には、コマンド行で指定される形式のオプションが 1 行につき 1 つ含まれます。

my_print_defaults は次のオプションをサポートします。

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --config-file=file_name, --defaults-file=file_name, -c file_name

    指定されたオプションファイルのみを読み取ります。

  • --debug=debug_options, -# debug_options

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o,/tmp/my_print_defaults.trace です。

  • --defaults-extra-file=file_name, --extra-file=file_name, -e file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。

  • --defaults-group-suffix=suffix, -g suffix

    コマンド行で指名されたグループのほかに、指定されたサフィクスのあるグループを読み取ります。

  • --login-path=name, -l name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-defaults, -n

    空の文字列を返します。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version, -V

    バージョン情報を表示して終了します。

4.7.4 resolve_stack_dump — 数値スタックトレースダンプをシンボルに解決

resolve_stack_dump は、数値スタックトレースダンプをシンボルに解決します。

resolve_stack_dump は次のように起動します。

shell> resolve_stack_dump [options] symbols_file [numeric_dump_file]

シンボルファイルは nm --numeric-sort mysqld コマンドからの出力を含むようにしてください。数値ダンプファイルは mysqld からの数値スタックトラックを含むようにしてください。コマンド行で数値ダンプファイルが指名されていない場合は、スタックトレースは標準入力から読み取られます。

resolve_stack_dump は次のオプションをサポートします。

  • --help, -h

    ヘルプメッセージを表示して終了します。

  • --numeric-dump-file=file_name, -n file_name

    指定されたファイルからスタックトレースを読み取ります。

  • --symbols-file=file_name, -s file_name

    指定されたシンボルファイルを使用します。

  • --version, -V

    バージョン情報を表示して終了します。

詳細はセクション24.4.1.5「スタックトレースの使用」を参照してください。

4.8 その他のプログラム

4.8.1 perror — エラーコードの説明
4.8.2 replace — 文字列置換ユーティリティー
4.8.3 resolveip — ホスト名と IP アドレスの解決

4.8.1 perror — エラーコードの説明

ほとんどのシステムエラーでは、MySQL は内部テキストメッセージに加えて、次のスタイルのいずれかでシステムエラーコードを表示します。

message ... (errno: #)
message ... (Errcode: #)

システムのドキュメントを確認するか perror ユーティリティーを使用することで、エラーコードの意味がわかります。

perror は、システムエラーコードまたはストレージエンジン (テーブルハンドラ) エラーコードの説明を出力します。

perror は次のように起動します。

shell> perror [options] errorcode ...

例:

shell> perror 13 64OS error code 13: Permission denied
OS error code 64: Machine is not on the network

MySQL Cluster エラーコードのエラーメッセージを取得するには、perror--ndb オプションで呼び出します。

shell> perror --ndb errorcode

システムエラーメッセージの意味はユーザーのオペレーティングシステムによって異なる場合があります。異なるオペレーティングシステムでは、所定のエラーコードの意味が異なる場合があります。

perror は次のオプションをサポートします。

  • --help, --info, -I, -?

    ヘルプメッセージを表示して終了します。

  • --ndb

    MySQL Cluster エラーコードのエラーメッセージを出力します。

  • --silent, -s

    サイレントモード。エラーメッセージのみ出力します。

  • --verbose, -v

    冗長モード。エラーコードおよびメッセージを出力します。これはデフォルトの動作です。

  • --version, -V

    バージョン情報を表示して終了します。

4.8.2 replace — 文字列置換ユーティリティー

replace ユーティリティープログラムは、ファイルまたは標準入力の文字列を変更します。

replace は次のいずれかの方法で起動します。

shell> replace fromto [fromto] ... -- file_name [file_name] ...shell> replace fromto [fromto] ... < file_name

from は検索する文字列を表し、to は変更後の文字列を表しています。文字列のペアは 1 つまたは複数指定できます。

-- オプションを使用して、文字列置換リストが終了しファイル名が開始する位置を示します。この場合、コマンド行で指定されたファイルは直接変更されるため、変換する前にオリジナルのコピーを作成するとよいでしょう。replace は、どの入力ファイルが実際に変更されたを示すメッセージを出力します。

-- オプションが与えられていない場合、replace は標準入力を読み取って標準出力に書き出します。

replace は有限状態マシンを使用して長い文字列から先に一致します。これは文字列の交換に使用できます。たとえば次のコマンドは、指定されたファイル file1 および file2 内の ab を交換します。

shell> replace a b b a -- file1 file2 ...

replace プログラムは msql2mysql に使用されています。セクション4.7.1「msql2mysql — mSQL プログラムを MySQL で使用するために変換」を参照してください。

replace は次のオプションをサポートします。

  • -?-I

    ヘルプメッセージを表示して終了します。

  • -#debug_options

    デバッグを有効にします。

  • -s

    サイレントモード。プログラムの動作についてより少ない情報を出力します。

  • -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • -V

    バージョン情報を表示して終了します。

4.8.3 resolveip — ホスト名と IP アドレスの解決

resolveip ユーティリティーはホスト名を IP アドレスに、IP アドレスをホスト名に解決します。

resolveip は次のように起動します。

shell> resolveip [options] {host_name|ip-addr} ...

resolveip は次のオプションをサポートします。

  • --help, --info, -?, -I

    ヘルプメッセージを表示して終了します。

  • --silent, -s

    サイレントモード。出力の生成を少なくします。

  • --version, -V

    バージョン情報を表示して終了します。

関連キーワード:  します,mysql,MySQL,サーバー,4,テーブル,name,された,ステートメント,コマンド