MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

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

4.2.4 コマンドオプションを使用した MySQL Server への接続

このセクションでは、コマンドラインオプションを使用して、mysqlmysqldump などのクライアントに対して MySQL サーバーへの接続を確立する方法を指定する方法について説明します。 URI のような接続文字列またはキーと値のペアを使用して MySQL Shell などのクライアントに対して接続を確立する方法の詳細は、セクション4.2.5「URI 類似文字列またはキーと値のペアを使用したサーバーへの接続」 を参照してください。 接続できない場合の追加情報は、セクション6.2.21「MySQL への接続の問題のトラブルシューティング」 を参照してください。

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

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

このコマンドは、明示的な接続パラメータを指定せずに mysql を起動します:

mysql

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

ホスト名、ユーザー名およびパスワードを明示的に指定するには、コマンドラインで適切なオプションを指定します。 デフォルトのデータベースを選択するには、database-name 引数を追加します。 例:

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb

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

前述したように、コマンドラインにパスワード値を含めるとセキュリティ上のリスクがあります。 このリスクを回避するには、次のパスワード値なしで --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 文字以下の値に変更しますが、パスワードが短いほど安全性が低くなる傾向があります。

クライアントプログラムは、次のように接続のタイプを決定します:

--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「サーバーに接続するためのコマンドオプション」 を参照してください。

クライアントプログラムを起動するたびに、コマンドラインで接続パラメータを入力せずに指定できます: