このセクションでは、コマンドラインオプションを使用して、mysql や mysqldump などのクライアントに対して MySQL サーバーへの接続を確立する方法を指定する方法について説明します。 URI のような接続文字列またはキーと値のペアを使用して MySQL Shell などのクライアントに対して接続を確立する方法の詳細は、セクション4.2.5「URI 類似文字列またはキーと値のペアを使用したサーバーへの接続」 を参照してください。 接続できない場合の追加情報は、セクション6.2.21「MySQL への接続の問題のトラブルシューティング」 を参照してください。
クライアントプログラムが MySQL サーバーに接続するには、サーバーが実行されているホストの名前や MySQL アカウントのユーザー名とパスワードなど、適切な接続パラメータを使用する必要があります。 各接続パラメータにはデフォルト値がありますが、コマンド行またはオプションファイルで指定されたプログラムオプションを使用して、必要に応じてデフォルト値をオーバーライドできます。
次の例は mysql クライアントプログラムを使用しますが、原則は mysqldump、mysqladmin、または mysqlshow など、ほかのクライアントにも適用されます。
このコマンドは、明示的な接続パラメータを指定せずに mysql を起動します:
mysql
パラメータオプションがないため、デフォルト値が適用されます。
デフォルトのホスト名は
localhost
です。 Unix では、後述するようにこれには特別な意味があります。デフォルトのユーザー名は、Windows では
ODBC
、Unix では Unix のログイン名です。--password
も-p
も指定されていないため、パスワードは送信されません。mysql では、最初のオプションではない引数はデフォルトデータベースの名前とみなされます。 このような引数はないため、mysql はデフォルトのデータベースを選択しません。
ホスト名、ユーザー名およびパスワードを明示的に指定するには、コマンドラインで適切なオプションを指定します。 デフォルトのデータベースを選択するには、database-name 引数を追加します。 例:
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
パスワードオプションについては、パスワード値はオプションです。
--password
または-p
オプションを使用してパスワード値を指定する場合は、--password=
または-p
とそれに続くパスワードの間にスペースなしが存在する必要があります。--password
または-p
を使用するが、パスワード値を指定しない場合、クライアントプログラムはパスワードの入力を求めます。 パスワードは入力時に表示されません。 これは、システム上の他のユーザーが ps などのコマンドを実行してパスワード行を表示できるようにするコマンド行でパスワードを指定するよりも安全です。 セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。パスワードがないこと、およびクライアントプログラムがパスワードを要求しないことを明示的に指定するには、
--skip-password
オプションを使用します。
前述したように、コマンドラインにパスワード値を含めるとセキュリティ上のリスクがあります。 このリスクを回避するには、次のパスワード値なしで --password
または -p
オプションを指定します:
mysql --host=localhost --user=myname --password mydb
mysql -h localhost -u myname -p mydb
パスワード値を指定せずに --password
または -p
オプションを指定すると、クライアントプログラムはプロンプトを出力し、パスワードの入力を待機します。 (これらの例では、mydb
はその前のパスワードオプションとスペースで区切られているため、パスワードとは解釈されません。)
システムによっては、MySQL がパスワードを要求するために使用するライブラリルーチンが、自動的にパスワードを 8 文字に制限します。 この制限は、MySQL ではなくシステムライブラリのプロパティです。 内部的には、MySQL にはパスワードの長さに関する制限はありません。 影響を受けるシステムの制限を回避するには、オプションファイルでパスワードを指定します (セクション4.2.2.2「オプションファイルの使用」 を参照)。 別の回避策として、MySQL パスワードを 8 文字以下の値に変更しますが、パスワードが短いほど安全性が低くなる傾向があります。
クライアントプログラムは、次のように接続のタイプを決定します:
-
ホストが指定されていないか、
localhost
である場合、ローカルホストへの接続が発生します: Windows では、
host
が.
(ピリオド) であるか、TCP/IP が有効でなく、--socket
が指定されていないか、ホストが空の場合、named_pipe
システム変数を有効にしてサーバーが起動され、名前付きパイプ接続がサポートされていれば、クライアントは名前付きパイプを使用して接続します。 名前付きパイプ接続がサポートされていない場合、または接続を行うユーザーがnamed_pipe_full_access_group
システム変数で指定された Windows グループのメンバーでない場合は、エラーが発生します。それ以外の場合、接続では TCP/IP が使用されます。
--protocol
オプションを使用すると、ほかのオプションが通常は別のプロトコルを使用する場合でも、特定のトランスポートプロトコルを使用できます。 つまり、--protocol
はトランスポートプロトコルを明示的に指定し、localhost
の場合でも前述のルールをオーバーライドします。
選択したトランスポートプロトコルに関連する接続オプションのみが使用または選択されます。 その他の接続オプションは無視されます。 たとえば、Unix 上の --host=localhost
では、TCP/IP のポート番号を指定するために --port
または -P
オプションが指定されている場合でも、クライアントは Unix ソケットファイルを使用してローカルサーバーへの接続を試みます。
クライアントがローカルサーバーに TCP/IP 接続するようにするには、--host
または -h
を使用して、127.0.0.1
(localhost
ではなく) のホスト名の値、またはローカルサーバーの IP アドレスまたは名前を指定します。 localhost
の場合でも、--protocol=TCP
オプションを使用してトランスポートプロトコルを明示的に指定することもできます。 例:
mysql --host=127.0.0.1
mysql --protocol=TCP
サーバーが IPv6 接続を受け入れるように構成されている場合、クライアントは --host=::1
を使用して IPv6 経由でローカルサーバーに接続できます。 セクション5.1.13「IPv6 サポート」を参照してください。
Windows で、MySQL クライアントで名前付きパイプ接続を強制的に使用するには、--pipe
または --protocol=PIPE
オプションを指定するか、ホスト名として .
(ピリオド) を指定します。 名前付きパイプ接続をサポートするために named_pipe
システム変数を有効にしてサーバーを起動しなかった場合、または接続を行うユーザーが named_pipe_full_access_group
システム変数で指定された Windows グループのメンバーでない場合は、エラーが発生します。 デフォルトのパイプ名を使用しない場合には --socket
オプションを使用してパイプ名を指定します。
リモートサーバーへの接続では、TCP/IP が使用されます。 次のコマンドは、デフォルトのポート番号 (3306) を使用して remote.example.com
で動作するサーバーに接続します。
mysql --host=remote.example.com
ポート番号を明示的に指定するには、--port
オプションまたは -P
オプションを使用します。
mysql --host=remote.example.com --port=13306
ローカルサーバーへの接続にもポート番号を指定できます。 ただし、前述のように、Unix 上の localhost
への接続ではデフォルトでソケットファイルが使用されるため、前述のように TCP/IP 接続を強制しないかぎり、ポート番号を指定するオプションは無視されます。
次のコマンドでは、Unix ではプログラムはソケットファイルを使用し、--port
オプションは無視されます。
mysql --port=13306 --host=localhost
ポート番号を使用するには、TCP/IP 接続を強制します。 たとえば、次のいずれかの方法でプログラムを起動します:
mysql --port=13306 --host=127.0.0.1
mysql --port=13306 --protocol=TCP
クライアントプログラムがサーバーへの接続を確立する方法を制御するオプションの詳細は、セクション4.2.3「サーバーに接続するためのコマンドオプション」 を参照してください。
クライアントプログラムを起動するたびに、コマンドラインで接続パラメータを入力せずに指定できます:
-
オプションファイルの
[client]
セクションで接続パラメータを指定します。 このファイルの関係セクションは次のようになります。[client] host=host_name user=user_name password=password
詳細は、セクション4.2.2.2「オプションファイルの使用」を参照してください。
-
一部の接続パラメータは、環境変数を使用して指定できます。 例:
mysql のホストを指定するには、
MYSQL_HOST
を使用します。Windows で MySQL ユーザー名を指定するには、
USER
を使用します。
サポートされている環境変数のリストは、セクション4.9「環境変数」 を参照してください。