Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  オプションのデフォルト、値を想定するオプション、および = 記号

このページは機械翻訳したものです。

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

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

mysql --host=tonfisk --user=jon

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

mysql --host tonfisk --user jon

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

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

shell> mysql --host 85.224.35.45 --user jon
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 8.0.29 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 --user
mysql: option '--user' requires an argument

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

shell> mysql --host --user jon
ERROR 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.err
2013-09-24T15:36:22.278034Z 0 [ERROR] Too many arguments (first extra is 'my-errors').
2013-09-24T15:36:22.278059Z 0 [Note] Use --verbose --help to get a list of available options!
2013-09-24T15:36:22.278076Z 0 [ERROR] Aborting
2013-09-24T15:36:22.279704Z 0 [Note] InnoDB: Starting shutdown...
2013-09-24T15:36:23.777471Z 0 [Note] InnoDB: Shutdown completed; log sequence number 2319086
2013-09-24T15:36:23.780134Z 0 [Note] mysqld: Shutdown complete

--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> mysql
ERROR 2005 (HY000): Unknown MySQL server host '--user' (1)

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

[mysql]

user jon

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

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

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

[mysql]

user=jon

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

shell> mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 8.0.29 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 tonfisk
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 8.0.29 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)

オプションファイルに値のない値を必要とするオプションを指定すると、サーバーはエラーで中止されます。