MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  コマンドオプションを使用した MySQL Server への接続

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

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

  • デフォルトのホスト名は 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 では、共有メモリー接続をサポートするために shared_memory システム変数を有効にしてサーバーを起動した場合、クライアントは共有メモリーを使用して接続します。

    • Unix では、MySQL プログラムは、他のネットワークベースのプログラムと比較して予想とは異なる方法で、ホスト名 localhost を特別に処理: クライアントは Unix ソケットファイルを使用して接続します。 ソケット名の指定には、--socket オプションまたは MYSQL_UNIX_PORT 環境変数を使用できます。

  • 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「環境変数」 を参照してください。


関連キーワード:  接続, プログラム, サーバー, パスワード, コマンド, host, セクション, 起動, Unix, 表示