このセクションでは、クライアントプログラムがサーバーへの接続を確立する方法、接続を暗号化するかどうか、および接続を圧縮するかどうかを制御する、ほとんどの 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 ユーザー名 |
-
使用するクライアント側認証プラグインに関するヒント。 セクション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
オプションを使用します。 -
Windows で、名前付きパイプを使用してサーバーに接続します。 このオプションは、ネームパイプ接続をサポートするために
named_pipe
システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group
システム変数で指定された Windows グループのメンバーである必要があります。 -
プラグインを検索するディレクトリ。 このオプションは、
--default-auth
オプションを使用して認証プラグインを指定しても、クライアントプログラムがそれを検出しない場合に指定します。 セクション6.2.17「プラガブル認証」を参照してください。 -
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
システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 -
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 プロトコル |
-
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 プラガブル認証のキャッシュ」 を参照してください。 -
PEM 形式の認証局 (CA) 証明書ファイルのパス名。 このファイルには、信頼できる SSL 認証局のリストが含まれています。
サーバーへの暗号化された接続を確立するときにサーバー証明書を認証しないようにクライアントに指示するには、
--ssl-ca
も--ssl-capath
も指定しません。 サーバーは、クライアントアカウントに設定されている適用可能な要件に従ってクライアントを検証し、サーバー側で指定されているssl_ca
またはssl_capath
システム変数値を引き続き使用します。サーバーの CA ファイルを指定するには、
ssl_ca
システム変数を設定します。 -
PEM 形式の信頼できる SSL 認証局 (CA) 証明書ファイルを含むディレクトリのパス名。
サーバーへの暗号化された接続を確立するときにサーバー証明書を認証しないようにクライアントに指示するには、
--ssl-ca
も--ssl-capath
も指定しません。 サーバーは、クライアントアカウントに設定されている適用可能な要件に従ってクライアントを検証し、サーバー側で指定されているssl_ca
またはssl_capath
システム変数値を引き続き使用します。サーバーの CA ディレクトリを指定するには、
ssl_capath
システム変数を設定します。 -
PEM 形式のクライアント SSL 公開キー証明書ファイルのパス名。
サーバー SSL 公開キー証明書ファイルを指定するには、
ssl_cert
システム変数を設定します。 -
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
システム変数を設定します。 -
PEM 形式の証明書失効リストを含むファイルのパス名。
--ssl-crl
も--ssl-crlpath
も指定されていない場合は、CA パスに証明書失効リストが含まれていても、CRL チェックが実行されません。サーバーの失効リストファイルを指定するには、
ssl_crl
システム変数を設定します。 -
PEM 形式の証明書失効リストファイルを含むディレクトリのパス名。
--ssl-crl
も--ssl-crlpath
も指定されていない場合は、CA パスに証明書失効リストが含まれていても、CRL チェックが実行されません。サーバーの失効リストディレクトリを指定するには、
ssl_crlpath
システム変数を設定します。 -
--ssl-fips-mode={OFF|ON|STRICT}
クライアント側で FIPS モードを有効にするかどうかを制御します。
--ssl-fips-mode
オプションは、暗号化された接続の確立には使用されず、許可する暗号化操作に影響する点で、他の--ssl-
オプションとは異なります。 セクション6.8「FIPS のサポート」を参照してください。xxx
次の
--ssl-fips-mode
値を使用できます:OFF
: FIPS モードを無効にします。ON
: FIPS モードを有効にします。STRICT
: 「strict」 FIPS モードを有効にします。
注記OpenSSL FIPS オブジェクトモジュールが使用できない場合、
--ssl-fips-mode
で許可される値はOFF
のみです。 この場合、--ssl-fips-mode
をON
またはSTRICT
に設定すると、クライアントは起動時に警告を生成し、FIPS 以外のモードで動作します。サーバーの FIPS モードを指定するには、
ssl_fips_mode
システム変数を設定します。 -
PEM 形式のクライアント SSL 秘密キーファイルのパス名。 セキュリティを向上させるには、RSA キーサイズが 2048 ビット以上の証明書を使用します。
鍵ファイルがパスフレーズで保護されている場合、クライアントプログラムはユーザーにパスフレーズの入力を求めます。 パスワードは対話形式で指定する必要があり、ファイルには格納できません。 パスフレーズが正しくない場合は、鍵を読み取ることができない場合と同様に、プログラムが続行されます。
サーバー SSL 秘密キーファイルを指定するには、
ssl_key
システム変数を設定します。 -
このオプションは、サーバーへの接続の目的のセキュリティー状態を指定します。 これらのモード値は、厳密性の向上順に許容されます:
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 プロトコルを指定します。 この値は、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 |
-
可能であれば、クライアントとサーバーの間で送信されるすべての情報を圧縮します。
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 で追加されました。