コマンド行で指定されるプログラムオプションは次のルールに従います。
オプションはコマンド名のあとに指定します。
オプション引数は、それがオプション名の短い形式か長い形式かによって、1 つまたは 2 つのダッシュで始まります。 多くのオプションには短い形式と長い形式の両方があります。 たとえば、
-?
と--help
は、 MySQL プログラムに対してヘルプメッセージの表示を指示するオプションの短い形式と長い形式です。オプション名では大文字と小文字が区別されます。
-v
と-V
はどちらも正当であり、意味が異なります。 (これらは、--verbose
および--version
オプションに対応する短い形式です。)一部のオプションは、オプション名に続いて値を取ります。 たとえば、
-h localhost
または--host=localhost
は、クライアントプログラムに対して MySQL サーバーホストを示します。 オプション値は、プログラムに対して MySQL サーバーが稼働しているホストの名前を示します。-
値を取る長いオプションでは、オプション名と値を
=
記号で区切ります。 値を取る短いオプションでは、オプション値はオプション文字の直後に続けるか、または間にスペースがあってもかまいません。-hlocalhost
と-h localhost
は同等です。 このルールの例外は、MySQL のパスワードを指定するオプションです。 このオプションは、長い形式で--password=
として、またはpass_val
--password
として指定できます。 後者の場合 (パスワード値が指定されていない場合)、プログラムは対話形式でパスワードの入力を求めます。 パスワードオプションは、短い形式で-p
またはpass_val
-p
としても指定できます。 ただし、短い形式では、パスワード値が指定されている場合、スペースの介在なしのオプション文字に従う必要があります: オプション文字のあとにスペースが続く場合、プログラムは、次の引数がパスワード値であると想定されるか、ほかの種類の引数であると想定されるかを判断する方法がありません。 その結果、次の 2 つのコマンドは 2 つのまったく異なる意味を持ちます。mysql -ptest mysql -p test
最初のコマンドは、パスワード値
test
を使用することを mysql に指示しますが、デフォルトデータベースの指定は行いません。 2 番目は、パスワード値を要求し、test
をデフォルトデータベースとして使用することを mysql に指示します。 オプション名の中では、ダッシュ (
-
) とアンダースコア (_
) を同じ意味で使用できます。 たとえば、--skip-grant-tables
と--skip_grant_tables
は同等です。 (ただし、先頭のダッシュは下線で指定することはできません。)-
MySQL サーバーには、起動時にのみ指定できる特定のコマンドオプションと、起動時または実行時、あるいはその両方に設定できる一連のシステム変数があります。 システム変数名はダッシュではなくアンダースコアを使用し、実行時に (
SET
ステートメントやSELECT
ステートメントなどを使用して) 参照する場合は、アンダースコアを使用して記述する必要があります:SET GLOBAL general_log = ON; SELECT @@GLOBAL.general_log;
サーバーの起動時、システム変数の構文はコマンドオプションの構文と同じであるため、変数名内ではダッシュおよびアンダースコアを同じ意味で使用できます。 たとえば、
--general_log=ON
と--general-log=ON
は同等です。 (これは、オプションファイル内に設定されたシステム変数にも当てはまります。) -
数値を取るオプションの場合、1024、1024 2 または 1024 3 の乗数を示すために、値に接尾辞
K
、M
またはG
を付けることができます。 MySQL 8.0.14 の時点では、1024 4、1024 5 または 1024 6 の乗数を示すために、T
、P
およびE
も使用できます。 接尾辞文字は大文字または小文字にできます。たとえば、次のコマンドは mysqladmin に対し、サーバーに 1024 回 ping を実行し、各 ping の間に 10 秒間スリープすることを指示します。
mysqladmin --count=1K --sleep=10 ping
ファイル名をオプション値として指定する場合は、
~
Shell のメタ文字を使用しないでください。 想定どおりに解釈されない場合があります。
スペースを含むオプション値をコマンド行で指定する場合は、引用符で囲まなければなりません。 たとえば、--execute
(または -e
) オプションを mysql とともに使用して、セミコロンで区切られた SQL ステートメントをサーバーに渡すことができます。 このオプションが使用されると、mysql はオプション値のステートメントを実行して終了します。 ステートメントは引用符で囲む必要があります。 例:
shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: ******
+------------+
| VERSION() |
+------------+
| 8.0.19 |
+------------+
+---------------------+
| NOW() |
+---------------------+
| 2019-09-03 10:36:48 |
+---------------------+
shell>
長い形式 (--execute
) の後に等号 (=
) が続きます。
ステートメント内で引用符で囲まれた値を使用するには、内部引用符をエスケープするか、ステートメント自体の引用符とは異なるタイプの引用符をステートメント内で使用する必要があります。 一重引用符または二重引用符を使用できるかどうか、および引用符文字をエスケープするための構文は、コマンドプロセッサの機能により異なります。 たとえば、コマンドプロセッサが一重引用符または二重引用符の使用をサポートする場合、ステートメントの周囲には二重引用符を使用し、ステートメント内の引用符で囲む値には一重引用符を使用できます。