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


MySQL 8.0 リファレンスマニュアル  /  ...  /  サーバーに接続するためのコマンドオプション

4.2.3 サーバーに接続するためのコマンドオプション

このセクションでは、クライアントプログラムがサーバーへの接続を確立する方法、接続を暗号化するかどうか、および接続を圧縮するかどうかを制御する、ほとんどの MySQL クライアントプログラムでサポートされているオプションについて説明します。 これらのオプションは、コマンド行またはオプションファイルで指定できます。

接続確立のコマンドオプション

このセクションでは、クライアントプログラムがサーバーへの接続を確立する方法を制御するオプションについて説明します。 使用方法の詳細および例は、セクション4.2.4「コマンドオプションを使用した MySQL Server への接続」 を参照してください。

表 4.3 「接続確立オプションサマリー」

オプション名 説明
--default-auth 使用する認証プラグイン
--host MySQL サーバーがあるホスト
--password サーバーに接続する際に使用するパスワード
--pipe 名前付きパイプを使用してサーバに接続する (Windows のみ)
--plugin-dir プラグインがインストールされているディレクトリ
--port 接続用の TCP/IP ポート番号
--protocol 使用するトランスポートプロトコル
--shared-memory-base-name 共有メモリー接続用の共有メモリー名 (Windows のみ)
--socket 使用する Unix ソケットファイルまたは Windows 名前付きパイプ
--user サーバーへの接続時に使用する MySQL ユーザー名

  • --default-auth=plugin

    使用するクライアント側認証プラグインに関するヒント。 セクション6.2.17「プラガブル認証」を参照してください。

  • --host=host_name, -h host_name

    MySQL サーバーが実行されているホスト。 値には、ホスト名、IPv4 アドレスまたは IPv6 アドレスを指定できます。 デフォルト値は localhost です。

  • --password[=pass_val], -p[pass_val]

    サーバーへの接続に使用される MySQL アカウントのパスワード。 パスワード値はオプションです。 指定しない場合、プログラムによってプロンプトが表示されます。 指定する場合は、--password= または -p とそれに続くパスワードの間にスペースなしが存在する必要があります。 パスワードオプションを指定しない場合、デフォルトではパスワードは送信されません。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。 コマンド行でパスワードを指定しないようにするには、オプションファイルを使用します。 セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。

    パスワードがないこと、およびクライアントプログラムがパスワードを要求しないことを明示的に指定するには、--skip-password オプションを使用します。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。 このオプションは、ネームパイプ接続をサポートするために named_pipe システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group システム変数で指定された Windows グループのメンバーである必要があります。

  • --plugin-dir=dir_name

    プラグインを検索するディレクトリ。 このオプションは、--default-auth オプションを使用して認証プラグインを指定しても、クライアントプログラムがそれを検出しない場合に指定します。 セクション6.2.17「プラガブル認証」を参照してください。

  • --port=port_num, -P port_num

    TCP/IP 接続の場合、使用するポート番号。 デフォルトのポート番号は 3306 です。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    このオプションは、サーバーへの接続に使用するトランスポートプロトコルを明示的に指定します。 これは、他の接続パラメータが通常、必要なプロトコル以外のプロトコルを使用する場合に便利です。 たとえば、Unix では localhost への接続はデフォルトでは Unix ソケットファイルを使用して行われます。

    mysql --host=localhost

    かわりに TCP/IP トランスポートを強制的に使用するには、--protocol オプションを指定します:

    mysql --host=localhost --protocol=TCP

    次のテーブルに、許容される --protocol オプション値を示し、各値に適用可能なプラットフォームを示します。 値では大文字と小文字は区別されません。

    --protocol の値 使用されるトランスポートプロトコル 適用可能なプラットフォーム
    TCP ローカルサーバーまたはリモートサーバーへの TCP/IP トランスポート すべて
    SOCKET ローカルサーバーへの Unix ソケットファイルトランスポート Unix および Unix に似たシステム
    PIPE ローカルサーバーへの名前付きパイプトランスポート Windows
    MEMORY ローカルサーバーへの共有メモリートランスポート Windows

    セクション4.2.7「接続トランスポートプロトコル」も参照してください

  • --shared-memory-base-name=name

    Windows の場合、共有メモリを使用してローカルサーバに接続するために使用する共有メモリ名。 デフォルト値は MYSQL です。 共有メモリー名では大文字と小文字が区別されます。

    このオプションは、共有メモリー接続をサポートするために shared_memory システム変数を有効にしてサーバーを起動した場合にのみ適用されます。

  • --socket=path, -S path

    Unix の場合、名前付きパイプを使用してローカルサーバーに接続するために使用する Unix ソケットファイルの名前。 デフォルトの Unix ソケットファイル名は /tmp/mysql.sock です。

    Windows の場合、ローカルサーバーへの接続に使用する名前付きパイプの名前。 デフォルトの Windows パイプ名は MySQL です。 パイプ名では大文字と小文字は区別されません。

    Windows では、このオプションは、名前付きパイプ接続をサポートするために named_pipe システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group システム変数で指定された Windows グループのメンバーである必要があります。

  • --user=user_name, -u user_name

    サーバーへの接続に使用する MySQL アカウントのユーザー名。 デフォルトのユーザー名は、Windows では ODBC、Unix では Unix のログイン名です。

暗号化接続のコマンドオプション

このセクションでは、サーバーへの暗号化された接続を使用するかどうか、証明書とキーファイルの名前、および暗号化された接続のサポートに関連するその他のパラメータを指定するクライアントプログラムのオプションについて説明します。 推奨される使用例および接続が暗号化されているかどうかを確認する方法については、セクション6.3.1「暗号化接続を使用するための MySQL の構成」 を参照してください。

注記

これらのオプションは、暗号化の対象となるトランスポートプロトコル (TCP/IP および Unix ソケットファイル接続) を使用する接続に対してのみ有効です。 セクション4.2.7「接続トランスポートプロトコル」を参照してください

MySQL C API からの暗号化された接続の使用の詳細は、Support for Encrypted Connections を参照してください。

表 4.4 「接続暗号化オプションのサマリー」

オプション名 説明 導入
--get-server-public-key サーバーから RSA 公開キーをリクエスト
--server-public-key-path RSA 公開鍵を含むファイルへのパス名
--ssl-ca 信頼できる SSL 認証局のリストを含むファイル
--ssl-capath 信頼できる SSL 認証局の証明書ファイルを含むディレクトリ
--ssl-cert X.509 証明書を含むファイル
--ssl-cipher 接続の暗号化に許可される暗号
--ssl-crl 証明書失効リストを含むファイル
--ssl-crlpath 証明書失効リストファイルを含むディレクトリ
--ssl-fips-mode クライアント側で FIPS モードを有効にするかどうか
--ssl-key X.509 キーを含むファイル
--ssl-mode サーバーへの接続に必要なセキュリティ状態
--tls-ciphersuites 暗号化された接続に許可される TLSv1.3 暗号スイート 8.0.16
--tls-version 暗号化された接続に許可される TLS プロトコル

  • --get-server-public-key

    RSA キーペアベースのパスワード交換に必要な公開キーをサーバーにリクエストします。 このオプションは、caching_sha2_password 認証プラグインで認証されるクライアントに適用されます。 そのプラグインの場合、サーバーは要求されないかぎり公開鍵を送信しません。 このオプションは、そのプラグインで認証されないアカウントでは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。

    --server-public-key-path=file_name が指定され、有効な公開キーファイルが指定されている場合は、--get-server-public-key よりも優先されます。

    caching_sha2_password プラグインの詳細は、セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。

  • --server-public-key-path=file_name

    RSA キーペアベースのパスワード交換のためにサーバーが必要とする公開キーのクライアント側コピーを含む、PEM 形式のファイルへのパス名。 このオプションは、sha256_password または caching_sha2_password 認証プラグインで認証されるクライアントに適用されます。 これらのプラグインのいずれかで認証されないアカウントでは、このオプションは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。

    --server-public-key-path=file_name が指定され、有効な公開キーファイルが指定されている場合は、--get-server-public-key よりも優先されます。

    このオプションは、MySQL が OpenSSL を使用してビルドされている場合のみ利用できます。

    sha256_password および caching_sha2_password プラグインの詳細は、セクション6.4.1.3「SHA-256 プラガブル認証」 および セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。

  • --ssl-ca=file_name

    PEM 形式の認証局 (CA) 証明書ファイルのパス名。 このファイルには、信頼できる SSL 認証局のリストが含まれています。

    サーバーへの暗号化された接続を確立するときにサーバー証明書を認証しないようにクライアントに指示するには、--ssl-ca--ssl-capath も指定しません。 サーバーは、クライアントアカウントに設定されている適用可能な要件に従ってクライアントを検証し、サーバー側で指定されている ssl_ca または ssl_capath システム変数値を引き続き使用します。

    サーバーの CA ファイルを指定するには、ssl_ca システム変数を設定します。

  • --ssl-capath=dir_name

    PEM 形式の信頼できる SSL 認証局 (CA) 証明書ファイルを含むディレクトリのパス名。

    サーバーへの暗号化された接続を確立するときにサーバー証明書を認証しないようにクライアントに指示するには、--ssl-ca--ssl-capath も指定しません。 サーバーは、クライアントアカウントに設定されている適用可能な要件に従ってクライアントを検証し、サーバー側で指定されている ssl_ca または ssl_capath システム変数値を引き続き使用します。

    サーバーの CA ディレクトリを指定するには、ssl_capath システム変数を設定します。

  • --ssl-cert=file_name

    PEM 形式のクライアント SSL 公開キー証明書ファイルのパス名。

    サーバー SSL 公開キー証明書ファイルを指定するには、ssl_cert システム変数を設定します。

  • --ssl-cipher=cipher_list

    TLSv1.2までのTLS プロトコルを使用する接続に許可される暗号のリスト。 リスト内の暗号がサポートされていない場合、これらの TLS プロトコルを使用する暗号化された接続は機能しません。

    移植性を最大にするには、cipher_list をコロンで区切った 1 つ以上の暗号名のリストで指定するようにしてください。 例:

    --ssl-cipher=AES128-SHA
    --ssl-cipher=DHE-RSA-AES128-GCM-SHA256:AES128-SHA

    OpenSSL は、https://www.openssl.org/docs/manmaster/man1/ciphers.html の OpenSSL ドキュメントで説明されている暗号を指定するための構文をサポートしています。

    MySQL がサポートする暗号化暗号の詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 を参照してください。

    サーバーの暗号を指定するには、ssl_cipher システム変数を設定します。

  • --ssl-crl=file_name

    PEM 形式の証明書失効リストを含むファイルのパス名。

    --ssl-crl--ssl-crlpath も指定されていない場合は、CA パスに証明書失効リストが含まれていても、CRL チェックが実行されません。

    サーバーの失効リストファイルを指定するには、ssl_crl システム変数を設定します。

  • --ssl-crlpath=dir_name

    PEM 形式の証明書失効リストファイルを含むディレクトリのパス名。

    --ssl-crl--ssl-crlpath も指定されていない場合は、CA パスに証明書失効リストが含まれていても、CRL チェックが実行されません。

    サーバーの失効リストディレクトリを指定するには、ssl_crlpath システム変数を設定します。

  • --ssl-fips-mode={OFF|ON|STRICT}

    クライアント側で FIPS モードを有効にするかどうかを制御します。 --ssl-fips-mode オプションは、暗号化された接続の確立には使用されず、許可する暗号化操作に影響する点で、他の --ssl-xxx オプションとは異なります。 セクション6.8「FIPS のサポート」を参照してください。

    次の --ssl-fips-mode 値を使用できます:

    • OFF: FIPS モードを無効にします。

    • ON: FIPS モードを有効にします。

    • STRICT: strict FIPS モードを有効にします。

    注記

    OpenSSL FIPS オブジェクトモジュールが使用できない場合、--ssl-fips-mode で許可される値は OFF のみです。 この場合、--ssl-fips-modeON または STRICT に設定すると、クライアントは起動時に警告を生成し、FIPS 以外のモードで動作します。

    サーバーの FIPS モードを指定するには、ssl_fips_mode システム変数を設定します。

  • --ssl-key=file_name

    PEM 形式のクライアント SSL 秘密キーファイルのパス名。 セキュリティを向上させるには、RSA キーサイズが 2048 ビット以上の証明書を使用します。

    鍵ファイルがパスフレーズで保護されている場合、クライアントプログラムはユーザーにパスフレーズの入力を求めます。 パスワードは対話形式で指定する必要があり、ファイルには格納できません。 パスフレーズが正しくない場合は、鍵を読み取ることができない場合と同様に、プログラムが続行されます。

    サーバー SSL 秘密キーファイルを指定するには、ssl_key システム変数を設定します。

  • --ssl-mode=mode

    このオプションは、サーバーへの接続の目的のセキュリティー状態を指定します。 これらのモード値は、厳密性の向上順に許容されます:

    • DISABLED: 非暗号化接続を確立します。

    • PREFERRED: サーバーが暗号化された接続をサポートしている場合は、暗号化された接続を確立します。暗号化された接続を確立できない場合は、暗号化されていない接続にフォールバックします。 これは、--ssl-mode が指定されていない場合のデフォルトです。

      Unix ソケットファイルを介した接続は、PREFERRED モードでは暗号化されません。 Unix ソケットファイル接続の暗号化を強制するには、REQUIRED または厳密なモードを使用します。 (ただし、ソケットファイルトランスポートはデフォルトでセキュアであるため、ソケットファイル接続を暗号化するとセキュアでなくなり、CPU 負荷が増加します。)

    • REQUIRED: サーバーが暗号化された接続をサポートしている場合は、暗号化された接続を確立します。 暗号化された接続を確立できない場合、接続は失敗します。

    • VERIFY_CA: REQUIRED と似ていますが、構成された CA 証明書に対してサーバー認証局 (CA) 証明書を追加で検証します。 一致する有効な CA 証明書が見つからない場合、接続は失敗します。

    • VERIFY_IDENTITY : VERIFY_CA と同様ですが、サーバーがクライアントに送信する証明書のアイデンティティと照合して、クライアントがサーバーへの接続に使用するホスト名をチェックして、ホスト名のアイデンティティ検証を追加で実行します:

      • MySQL 8.0.12 では、クライアントが OpenSSL 1.0.2 以上を使用する場合、クライアントは接続に使用するホスト名がサーバー証明書のサブジェクト代替名の値または共通名の値と一致するかどうかを確認します。 ホスト名のアイデンティティ検証は、ワイルドカードを使用して共通名を指定する証明書でも機能します。

      • それ以外の場合、クライアントは接続に使用するホスト名がサーバー証明書の共通名の値と一致するかどうかを確認します。

      不一致がある場合、接続は失敗します。 暗号化された接続の場合、このオプションは中間者攻撃を防ぐのに役立ちます。

      注記

      VERIFY_IDENTITY を使用したホスト名アイデンティティ検証は、サーバーによって自動的に作成された自己署名証明書、または mysql_ssl_rsa_setup を使用して手動で作成された自己署名証明書では機能しません (セクション6.3.3.1「MySQL を使用した SSL および RSA 証明書とキーの作成」 を参照)。 このような自己署名証明書には、共通名の値としてサーバー名は含まれません。

    --ssl-mode オプションは、次のように CA 証明書オプションと対話します:

    • --ssl-mode が明示的に設定されていない場合、--ssl-ca または --ssl-capath の使用は --ssl-mode=VERIFY_CA を意味します。

    • VERIFY_CA または VERIFY_IDENTITY--ssl-mode 値の場合、--ssl-ca または --ssl-capath も、サーバーで使用される CA 証明書と一致する CA 証明書を指定する必要があります。

    • VERIFY_CA または VERIFY_IDENTITY 以外の値を持つ明示的な --ssl-mode オプションを明示的な --ssl-ca または --ssl-capath オプションとともに使用すると、CA 証明書オプションが指定されているにもかかわらず、サーバー証明書の検証が実行されないという警告が生成されます。

    MySQL アカウントで暗号化された接続を使用する必要がある場合は、CREATE USER を使用して REQUIRE SSL 句でアカウントを作成するか、既存のアカウントに ALTER USER を使用して REQUIRE SSL 句を追加します。 これにより、MySQL が暗号化された接続をサポートし、暗号化された接続を確立できないかぎり、アカウントを使用するクライアントによる接続試行が拒否されます。

    REQUIRE 句では、他の暗号化関連のオプションを使用して、REQUIRE SSL より厳格なセキュリティ要件を適用できます。 様々な REQUIRE オプションを使用して構成されたアカウントを使用して接続するクライアントで指定する必要があるコマンドオプションの詳細は、CREATE USER SSL/TLS オプション を参照してください。

  • --tls-ciphersuites=ciphersuite_list

    このオプションは、TLSv1.3 を使用する暗号化された接続に対してクライアントが許可する暗号スイートを指定します。 値は、コロンで区切られたゼロ個以上の暗号スイート名のリストです。 例:

    mysql --tls-ciphersuites="suite1:suite2:suite3"

    このオプションに指定できる暗号スイートは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 このオプションが設定されていない場合、クライアントは暗号化方式群のデフォルトセットを許可します。 このオプションが空の文字列に設定されている場合、暗号スイートは有効にならず、暗号化された接続を確立できません。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。

    このオプションは MySQL 8.0.16 で追加されました。

    サーバーが許可する暗号化方式群を指定するには、tls_ciphersuites システム変数を設定します。

  • --tls-version=protocol_list

    このオプションは、クライアントが暗号化された接続に対して許可する TLS プロトコルを指定します。 この値は、1 つまたは複数のコンマ区切りプロトコルバージョンのリストです。 例:

    mysql --tls-version="TLSv1.1,TLSv1.2"

    このオプションに指定できるプロトコルは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 「穴」をリストに残さないなど、許可されたプロトコルを選択する必要があります。 たとえば、次の値には穴がありません:

    --tls-version="TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"
    --tls-version="TLSv1.1,TLSv1.2,TLSv1.3"
    --tls-version="TLSv1.2,TLSv1.3"
    --tls-version="TLSv1.3"

    これらの値には穴があり、使用しないでください:

    --tls-version="TLSv1,TLSv1.2"
    --tls-version="TLSv1.1,TLSv1.3"

    詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。

    サーバーが許可する TLS プロトコルを指定するには、tls_version システム変数を設定します。

接続圧縮のコマンドオプション

このセクションでは、クライアントプログラムがサーバーへの接続の圧縮の使用を制御できるようにするオプションについて説明します。 使用方法の詳細および例は、セクション4.2.8「接続圧縮制御」 を参照してください。

表 4.5 「接続圧縮オプションのサマリー」

オプション名 説明 導入 非推奨
--compress クライアントとサーバー間で送信される情報をすべて圧縮 8.0.18
--compression-algorithms サーバーへの接続に許可される圧縮アルゴリズム 8.0.18
--zstd-compression-level zstd 圧縮を使用するサーバーへの接続の圧縮レベル 8.0.18

  • --compress, -C

    可能であれば、クライアントとサーバーの間で送信されるすべての情報を圧縮します。

    MySQL 8.0.18 では、このオプションは非推奨です。 MySQL の将来のバージョンで削除されることが予想されます。 レガシー接続圧縮の構成を参照してください。

  • --compression-algorithms=value

    サーバーへの接続に許可される圧縮アルゴリズム。 使用可能なアルゴリズムは、protocol_compression_algorithms システム変数の場合と同じです。 デフォルト値は uncompressed です。

    このオプションは MySQL 8.0.18 で追加されました。

  • --zstd-compression-level=level

    zstd 圧縮アルゴリズムを使用するサーバーへの接続に使用する圧縮レベル。 許可されるレベルは 1 から 22 で、大きい値は圧縮レベルの増加を示します。 デフォルトの zstd 圧縮レベルは 3 です。 圧縮レベルの設定は、zstd 圧縮を使用しない接続には影響しません。

    このオプションは MySQL 8.0.18 で追加されました。


関連キーワード:  接続, サーバー, 暗号, プログラム, 圧縮, プロトコル, セクション, 設定, TLSv, コマンド