コマンドラインにおけるプログラムのオプションは次の法則に従って作動します。
オプションはコマンド名の後に置かれます。
オプション引数はその名前が短いか長いかに応じて、シングル、またはダブルダッシュで始まります。オプションの多くがこの両方を持ち合わせています。例えば、-?
と--help
は
MySQL
でヘルプメッセージの表示を行うオプションのそれぞれのフォームにあたります。
オプション名は時にとてもデリケートなものでもあります。-v
と-V
はどちらも正しく、それぞれ異なる意味を持っています。(-vは--verbose
の、-Vは--version
の短縮形としての意味で使われます。)
オプションの中にはオプション名に続く値をとるものもあります。例えば、-h
localhost
または--host=localhost
は
MySQL
がクライアントプログラムをホストしていることを示します。オプションの値はプログラムに
MySQL
が起動しているホストの名前を示します。
値を持つ長いオプションにおいては、オプション名と値を‘=
’印に従って切り離します。値を持つ短いオプションでのその値はオプション名の直後に続いているか、またはスペースが空いていますが、-hlocalhost
と -h
localhost
は同等の意味を持っています。ここでの例外は、MySQL
パスワードを指定するオプションの法則です。このオプションは
--password=
という長い形でか、pass_val
--password
という短い形で与えられます。後者の場合(パスワード値が与えられていない状態で)には、プログラムによってパスワードを入力するようにとのプロンプトが表示されます。パスワードオプションはまた、-p
、もしくはpass_val
-p
という短い形で入力することも可能です。しかしこの場合、もし値が付属していれば間にスペースを入れずオプションの直後に値が来るようにしなければいけません。その理由は、もしオプションの後にスペースが入れば、プログラムはこれに続く引数がパスワード値なのか、または何か別の引数なのかを特定することができなくなくなるからです。従って、ここで例に挙げるふたつのコマンドはそれぞれが全く異なった意味を持っています。
shell>mysql -ptest
shell>mysql -p test
初めのコマンドはtest
のパスワード値を使用するためのmysqlを指示しますが、初期設定データベースの特定は行いません。これとは異なり、もう一方はmysqlプロンプトでパスワード値を求めるように指示し、さらにtest
を初期設定データベースとして使用します。
オプションのうちの数種はオン、またはオフの切り替えをコントロールします。例えば、mysqlクライアントは、クエリから得られる結果の冒頭にカラム名の行を表示するか否かを決定するオプション--column-names
をサポートします。この作業は初期設定において可能です。けれども、データだけを読み取り初期ヘッダーラインを読み取らないようなプログラムにmysqlが出力された場合などは、この機能を無効にすることも可能です。
列名を無効にするには次のオプションのうちのいずれかを指定します。
--disable-column-names --skip-column-names --column-names=0
--disable
と--skip
の頭部と末尾=0
は全て同じ働きをします。つまり、オプションをオフに切り替えます。
オプションを「enabled」に切り替えるためには、次のうちのいずれかを指定する必要があります。
--column-names --enable-column-names --column-names=1
もし頭部が--loose
のオプションがあれば、もしプログラムがオプションを認知できない場合でもエラーで終了せず、ただ警告を発します。
shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'
この --loose
はMySQLを同じコンピュータ上に複数回インストールした状態でプログラムを立ち上げ、オプションファイルにオプションをリストアップする時に役立ちます。
全てのバージョンには認知されないようなオプションでも
--loose
またはオプションファイル内では
loose
を入力することによって使用可能になります。オプションを認知できるバージョンでは通常通りに処理され、そうでないバージョンでは警告が表示され、そして無視されます。
その他のオプションの中で場合によってはmysqlとともに便利に働くのが--execute
、または-e
で、SQLステートメントをサーバに送り届けます。ステートメントはシングル、またはダブルの引用符で囲まれている必要があります。もしこの引用符内の値を使用したい場合には、ステートメントにダブルの引用符を使用し、シングルの引用符をステートメント内の値のうちのいづれかに使用します。このオプションが使用される際には、mysqlがステートメントを実行し、その後終了します。
ここで例として、次のコマンドをユーザアカウントのリスト取得のために使うことにしましょう。
shell>mysql -u root -p --execute="SELECT User, Host FROM user" mysql
Enter password:******
+------+-----------+ | User | Host | +------+-----------+ | | gigan | | root | gigan | | | localhost | | jon | localhost | | root | localhost | +------+-----------+ shell>
長い形のタイプ(--execute
)の後ろにはイコール(=
)が続いている事を確認します。
上記の例ではmysql
データベースの名前は個別の引数として認められています。しかし、同じステートメントを初期設定データベースをしていしないコマンドを使用して実行することも可能です。
mysql> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"
複数の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 | +---------------------+
オプション--execute
、または-e
は、アナログ形式のコマンドをMySQLクラスターへのndb_mgm管理クライアントへと届けるために使用されることもあります。例については
項14.3.6. 「安全なシャットダウンと再起動」を参照してください。