### 4.2.3 连接服务器的命令选项

[](<>)

本节描述大多数 MySQL 客户端程序支持的选项，这些选项控制客户端程序如何建立与服务器的连接、连接是否加密以及连接是否压缩。这些选项可以在命令行或选项文件中给出。

-   [连接建立的命令选项](connection-options.html#connection-establishment-options)

-   [加密连接的命令选项](connection-options.html#encrypted-connection-options)

-   [连接压缩的命令选项](connection-options.html#connection-compression-options)

#### 连接建立的命令选项

本节介绍控制客户端程序如何与服务器建立连接的选项。有关显示如何使用它们的其他信息和示例，请参阅[第 4.2.4 节，“使用命令选项连接到 MySQL 服务器”](connecting.html).

[](<>)

**表 4.3 连接建立选项摘要**

| 选项名称 | 描述 | 介绍 |
| ---- | --- | --- |
| [--默认身份验证](connection-options.html#option_general_default-auth) | 要使用的身份验证插件 |  |
| [--主持人](connection-options.html#option_general_host) | MySQL服务器所在的主机 |  |
| [--密码](connection-options.html#option_general_password) | 连接服务器时使用的密码 |  |
| [--密码1](connection-options.html#option_general_password1) | 连接到服务器时使用的第一个多重身份验证密码 | 8.0.27 |
| [--密码2](connection-options.html#option_general_password2) | 连接到服务器时使用的第二个多重身份验证密码 | 8.0.27 |
| [--密码3](connection-options.html#option_general_password3) | 连接到服务器时使用的第三个多重身份验证密码 | 8.0.27 |
| [--管道](connection-options.html#option_general_pipe) | 使用命名管道连接到服务器（仅限 Windows） |  |
| [--插件目录](connection-options.html#option_general_plugin-dir) | 插件安装目录 |  |
| [--港口](connection-options.html#option_general_port) | 用于连接的 TCP/IP 端口号 |  |
| [--协议](connection-options.html#option_general_protocol) | 要使用的传输协议 |  |
| [--shared-memory-base-name](connection-options.html#option_general_shared-memory-base-name) | 共享内存连接的共享内存名称（仅限 Windows） |  |
| [--插座](connection-options.html#option_general_socket) | 要使用的 Unix 套接字文件或 Windows 命名管道 |  |
| [--用户](connection-options.html#option_general_user) | 连接到服务器时使用的 MySQL 用户名 |  |

-   [](<>) [`--default-auth=*`插入`*`](connection-options.html#option_general_default-auth)

    [](<>)

    关于使用哪个客户端身份验证插件的提示。看[第 6.2.17 节，“可插拔身份验证”](pluggable-authentication.html).

-   [](<>) [`--主机=*`主机名`*`](connection-options.html#option_general_host),`-h *`主机名`*`

    [](<>)

    运行 MySQL 服务器的主机。该值可以是主机名、IPv4 地址或 IPv6 地址。默认值为`本地主机`.

-   [](<>) [`--密码[=*`pass_val`*]`](connection-options.html#option_general_password),`-p[*`pass_val`*]`

    [](<>)

    用于连接服务器的 MySQL 帐户的密码。密码值是可选的。如果没有给出，客户端程序会提示输入一个。如果给出，必须有*没有空间*之间[`--密码=`](connection-options.html#option_general_password)要么`-p`和它后面的密码。如果未指定密码选项，则默认为不发送密码。

    在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码，请使用选项文件。看[第 6.1.2.1 节，“最终用户密码安全指南”](password-security-user.html).

    要明确指定没有密码并且客户端程序不应提示输入密码，请使用[`--跳过密码`](connection-options.html#option_general_password)选项。

-   [](<>) [`--密码1[=*`pass_val`*]`](connection-options.html#option_general_password1)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因素 1 的密码。密码值是可选的。如果没有给出，客户端程序会提示输入一个。如果给出，必须有*没有空间*之间[`--密码1=`](connection-options.html#option_general_password1)和它后面的密码。如果未指定密码选项，则默认为不发送密码。

    在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码，请使用选项文件。看[第 6.1.2.1 节，“最终用户密码安全指南”](password-security-user.html).

    要明确指定没有密码并且客户端程序不应提示输入密码，请使用[`--skip-password1`](connection-options.html#option_general_password1)选项。

    [`--密码1`](connection-options.html#option_general_password1)和[`- 密码`](connection-options.html#option_general_password)是同义词[`--skip-password1`](connection-options.html#option_general_password1)和[`--跳过密码`](connection-options.html#option_general_password).

-   [](<>) [`--密码2[=*`pass_val`*]`](connection-options.html#option_general_password2)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因子 2 的密码。此选项的语义类似于[`--密码1`](connection-options.html#option_general_password1);有关详细信息，请参阅该选项的说明。

-   [](<>) [`--密码3[=*`pass_val`*]`](connection-options.html#option_general_password3)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因子 3 的密码。此选项的语义类似于[`--密码1`](connection-options.html#option_general_password1);有关详细信息，请参阅该选项的说明。

-   [](<>) [`- 管道`](connection-options.html#option_general_pipe),`-W`

    [](<>)

    在 Windows 上，使用命名管道连接到服务器。此选项仅适用于服务器以[`命名管道`](server-system-variables.html#sysvar_named_pipe)启用系统变量以支持命名管道连接。此外，建立连接的用户必须是由指定的 Windows 组的成员[`named_pipe_full_access_group`](server-system-variables.html#sysvar_named_pipe_full_access_group)系统变量。

-   [](<>) [`--插件目录=*`目录名`*`](connection-options.html#option_general_plugin-dir)

    [](<>)

    查找插件的目录。指定此选项，如果[`--default-auth`](connection-options.html#option_general_default-auth)选项用于指定身份验证插件，但客户端程序没有找到它。看[第 6.2.17 节，“可插拔身份验证”](pluggable-authentication.html).

-   [](<>) [`--端口=*`端口号`*`](connection-options.html#option_general_port),`-P *`端口号`*`

    [](<>)

    对于 TCP/IP 连接，要使用的端口号。默认端口号为 3306。

-   [](<>) [`--protocol={TCP|SOCKET|管道|内存}`](connection-options.html#option_general_protocol)

    [](<>)

    此选项明确指定用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议之外的协议时，它很有用。例如，Unix 上的连接到`本地主机`默认情况下使用 Unix 套接字文件制作：

    ```
    mysql --host=localhost
    ```

    要强制改为使用 TCP/IP 传输，请指定[`- 协议`](connection-options.html#option_general_protocol)选项：

    ```
    mysql --host=localhost --protocol=TCP
    ```

    下表显示了允许的[`- 协议`](connection-options.html#option_general_protocol)选项值并指出每个值的适用平台。这些值不区分大小写。

    | [`- 协议`](connection-options.html#option_general_protocol)价值 | 使用的传输协议 | 适用平台 |
    | ----------------------------------------------------------- | ------- | ---- |
    | `TCP` | TCP/IP 传输到本地或远程服务器 | 全部 |
    | `插座` | Unix 套接字文件传输到本地服务器 | Unix和类Unix系统 |
    | `管道` | 命名管道传输到本地服务器 | 视窗 |
    | `记忆` | 共享内存传输到本地服务器 | 视窗 |

    也可以看看[第 4.2.7 节，“连接传输协议”](transport-protocols.html)

-   [](<>) [`--shared-memory-base-name=*`姓名`*`](connection-options.html#option_general_shared-memory-base-name)

    [](<>)

    在 Windows 上，用于使用共享内存与本地服务器建立连接的共享内存名称。默认值为`MYSQL`.共享内存名称区分大小写。

    此选项仅适用于服务器以[`共享内存`](server-system-variables.html#sysvar_shared_memory)启用系统变量以支持共享内存连接。

-   [](<>) [`--socket=*`小路`*`](connection-options.html#option_general_socket),`-S *`小路`*`

    [](<>)

    在 Unix 上，用于使用命名管道连接到本地服务器的 Unix 套接字文件的名称。默认的 Unix 套接字文件名是`/tmp/mysql.sock`.

    在 Windows 上，用于连接到本地服务器的命名管道的名称。默认的 Windows 管道名称是`MySQL`.管道名称不区分大小写。

    在 Windows 上，此选项仅在服务器以[`命名管道`](server-system-variables.html#sysvar_named_pipe)启用系统变量以支持命名管道连接。此外，建立连接的用户必须是由指定的 Windows 组的成员[`named_pipe_full_access_group`](server-system-variables.html#sysvar_named_pipe_full_access_group)系统变量。

-   [](<>) [`--用户=*`用户名`*`](connection-options.html#option_general_user),`-u *`用户名`*`

    [](<>)

    用于连接到服务器的 MySQL 帐户的用户名。默认用户名是`ODBC`在 Windows 上或您在 Unix 上的 Unix 登录名。

#### 加密连接的命令选项

[](<>)[](<>)[](<>)[](<>)

本节介绍客户端程序的选项，这些选项指定是否使用与服务器的加密连接、证书和密钥文件的名称以及与加密连接支持相关的其他参数。有关建议使用的示例以及如何检查连接是否已加密，请参阅[第 6.3.1 节，“配置 MySQL 以使用加密连接”](using-encrypted-connections.html).

笔记

这些选项仅对使用受加密的传输协议的连接有效；即 TCP/IP 和 Unix 套接字文件连接。看[第 4.2.7 节，“连接传输协议”](transport-protocols.html)

有关使用来自 MySQL C API 的加密连接的信息，请参阅[支持加密连接](https://dev.mysql.com/doc/c-api/8.0/en/c-api-encrypted-connections.html).

[](<>)

**表 4.4 连接加密选项摘要**

| 选项名称 | 描述 | 介绍 |
| ---- | --- | --- |
| [--get-server-public-key](connection-options.html#option_general_get-server-public-key) | 从服务器请求 RSA 公钥 |  |
| [--服务器公钥路径](connection-options.html#option_general_server-public-key-path) | 包含 RSA 公钥的文件的路径名 |  |
| [--ssl-ca](connection-options.html#option_general_ssl-ca) | 包含受信任 SSL 证书颁发机构列表的文件 |  |
| [--ssl-capath](connection-options.html#option_general_ssl-capath) | 包含受信任的 SSL 证书颁发机构证书文件的目录 |  |
| [--ssl 证书](connection-options.html#option_general_ssl-cert) | 包含 X.509 证书的文件 |  |
| [--ssl密码](connection-options.html#option_general_ssl-cipher) | 连接加密的允许密码 |  |
| [--ssl-crl](connection-options.html#option_general_ssl-crl) | 包含证书吊销列表的文件 |  |
| [--ssl-crlpath](connection-options.html#option_general_ssl-crlpath) | 包含证书吊销列表文件的目录 |  |
| [--ssl-fips 模式](connection-options.html#option_general_ssl-fips-mode) | 客户端是否开启 FIPS 模式 |  |
| [--ssl 密钥](connection-options.html#option_general_ssl-key) | 包含 X.509 密钥的文件 |  |
| [--ssl 模式](connection-options.html#option_general_ssl-mode) | 连接到服务器的所需安全状态 |  |
| [--ssl 会话数据](connection-options.html#option_general_ssl-session-data) | 包含 SSL 会话数据的文件 | 8.0.29 |
| [--ssl-session-data-continue-on-failed-reuse](connection-options.html#option_general_ssl-session-data-continue-on-failed-reuse) | 会话重用失败时是否建立连接 | 8.0.29 |
| [--tls-密码套件](connection-options.html#option_general_tls-ciphersuites) | 用于加密连接的允许 TLSv1.3 密码套件 | 8.0.16 |
| [--tls-版本](connection-options.html#option_general_tls-version) | 加密连接的允许 TLS 协议 |  |

-   [](<>) [`--get-server-public-key`](connection-options.html#option_general_get-server-public-key)

    [](<>)

    从服务器请求基于 RSA 密钥对的密码交换所需的公钥。此选项适用于通过`cache_sha2_password`身份验证插件。对于该插件，除非请求，否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户，此选项将被忽略。如果不使用基于 RSA 的密码交换，它也会被忽略，例如客户端使用安全连接连接到服务器的情况。

    如果[`--server-public-key-path=*`文件名`*`](connection-options.html#option_general_server-public-key-path)给出并指定一个有效的公钥文件，它优先于[`--get-server-public-key`](connection-options.html#option_general_get-server-public-key).

    有关信息`cache_sha2_password`插件，见[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) [`--server-public-key-path=*`文件名`*`](connection-options.html#option_general_server-public-key-path)

    [](<>)

    PEM 格式的文件的路径名，其中包含服务器基于 RSA 密钥对的密码交换所需的公钥的客户端副本。此选项适用于通过`sha256_password`要么`cache_sha2_password`身份验证插件。对于未使用这些插件之一进行身份验证的帐户，此选项将被忽略。如果不使用基于 RSA 的密码交换，它也会被忽略，例如客户端使用安全连接连接到服务器的情况。

    如果[`--server-public-key-path=*`文件名`*`](connection-options.html#option_general_server-public-key-path)给出并指定一个有效的公钥文件，它优先于[`--get-server-public-key`](connection-options.html#option_general_get-server-public-key).

    仅当 MySQL 使用 OpenSSL 构建时，此选项才可用。

    有关信息`sha256_password`和`cache_sha2_password`插件，见[第 6.4.1.3 节，“SHA-256 可插入身份验证”](sha256-pluggable-authentication.html)， 和[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) [`--ssl-ca=*`文件名`*`](connection-options.html#option_general_ssl-ca)

    [](<>)

    PEM 格式的证书颁发机构 (CA) 证书文件的路径名。该文件包含受信任的 SSL 证书颁发机构的列表。

    要告诉客户端在与服务器建立加密连接时不要验证服务器证书，既不指定[`--ssl-ca`](connection-options.html#option_general_ssl-ca)也不[`--ssl-capath`](connection-options.html#option_general_ssl-capath).服务器仍然根据为客户帐户建立的任何适用要求验证客户，并且它仍然使用任何[`ssl_ca`](server-system-variables.html#sysvar_ssl_ca)要么[`ssl_capath`](server-system-variables.html#sysvar_ssl_capath)在服务器端指定的系统变量值。

    要为服务器指定 CA 文件，请设置[`ssl_ca`](server-system-variables.html#sysvar_ssl_ca)系统变量。

-   [](<>) [`--ssl-capath=*`目录名`*`](connection-options.html#option_general_ssl-capath)

    [](<>)

    包含 PEM 格式的受信任 SSL 证书颁发机构 (CA) 证书文件的目录的路径名。

    要告诉客户端在与服务器建立加密连接时不要验证服务器证书，既不指定[`--ssl-ca`](connection-options.html#option_general_ssl-ca)也不[`--ssl-capath`](connection-options.html#option_general_ssl-capath).服务器仍然根据为客户帐户建立的任何适用要求验证客户，并且它仍然使用任何[`ssl_ca`](server-system-variables.html#sysvar_ssl_ca)要么[`ssl_capath`](server-system-variables.html#sysvar_ssl_capath)在服务器端指定的系统变量值。

    要为服务器指定 CA 目录，请设置[`ssl_capath`](server-system-variables.html#sysvar_ssl_capath)系统变量。

-   [](<>) [`--ssl-证书=*`文件名`*`](connection-options.html#option_general_ssl-cert)

    [](<>)

    PEM 格式的客户端 SSL 公钥证书文件的路径名。

    要指定服务器 SSL 公钥证书文件，请设置[`ssl_cert`](server-system-variables.html#sysvar_ssl_cert)系统变量。

-   [](<>) [`--ssl密码=*`密码列表`*`](connection-options.html#option_general_ssl-cipher)

    [](<>)

    允许使用 TLS 协议的连接的加密密码列表，直到 TLSv1.2。如果列表中不支持任何密码，则使用这些 TLS 协议的加密连接不起作用。

    为了最大的便携性，*`密码列表`*应该是一个或多个密码名称的列表，用冒号分隔。例子：

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

    OpenSSL 支持在 OpenSSL 文档中描述的用于指定密码的语法<https://www.openssl.org/docs/manmaster/man1/ciphers.html>.

    有关 MySQL 支持哪些加密密码的信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

    要指定服务器的加密密码，请设置[`ssl_cipher`](server-system-variables.html#sysvar_ssl_cipher)系统变量。

-   [](<>) [`--ssl-crl=*`文件名`*`](connection-options.html#option_general_ssl-crl)

    [](<>)

    包含 PEM 格式的证书吊销列表的文件的路径名。

    如果两者都没有[`--ssl-crl`](connection-options.html#option_general_ssl-crl)也不[`--ssl-crlpath`](connection-options.html#option_general_ssl-crlpath)如果给出，则不执行 CRL 检查，即使 CA 路径包含证书吊销列表。

    要为服务器指定撤销列表文件，请设置[`ssl_crl`](server-system-variables.html#sysvar_ssl_crl)系统变量。

-   [](<>) [`--ssl-crlpath=*`目录名`*`](connection-options.html#option_general_ssl-crlpath)

    [](<>)

    包含 PEM 格式的证书吊销列表文件的目录的路径名。

    如果两者都没有[`--ssl-crl`](connection-options.html#option_general_ssl-crl)也不[`--ssl-crlpath`](connection-options.html#option_general_ssl-crlpath)如果给出，则不执行 CRL 检查，即使 CA 路径包含证书吊销列表。

    要为服务器指定撤销列表目录，请设置[`ssl_crlpath`](server-system-variables.html#sysvar_ssl_crlpath)系统变量。

-   [](<>) [`--ssl-fips-mode={OFF|ON|STRICT}`](connection-options.html#option_general_ssl-fips-mode)

    [](<>)

    控制是否在客户端启用 FIPS 模式。这[`--ssl-fips-模式`](connection-options.html#option_general_ssl-fips-mode)选项不同于其他`--ssl-*`xxx`*`选项，因为它不用于建立加密连接，而是影响允许哪些加密操作。看[第 6.8 节，“FIPS 支持”](fips-mode.html).

    这些[`--ssl-fips-模式`](connection-options.html#option_general_ssl-fips-mode)允许的值：

    -   `离开`：禁用 FIPS 模式。

    -   `在`：启用 FIPS 模式。

    -   `严格的`：启用“严格”FIPS 模式。

    笔记

    如果 OpenSSL FIPS 对象模块不可用，则唯一允许的值[`--ssl-fips-模式`](connection-options.html#option_general_ssl-fips-mode)是`离开`.在这种情况下，设置[`--ssl-fips-模式`](connection-options.html#option_general_ssl-fips-mode)到`在`要么`严格的`导致客户端在启动时产生警告并在非 FIPS 模式下运行。

    要为服务器指定 FIPS 模式，请设置[`ssl_fips_mode`](server-system-variables.html#sysvar_ssl_fips_mode)系统变量。

-   [](<>) [`--ssl-key=*`文件名`*`](connection-options.html#option_general_ssl-key)

    [](<>)

    PEM 格式的客户端 SSL 私钥文件的路径名。为提高安全性，请使用 RSA 密钥大小至少为 2048 位的证书。

    如果密钥文件受密码保护，客户端程序会提示用户输入密码。密码必须以交互方式提供；它不能存储在文件中。如果密码不正确，程序会继续运行，就好像它无法读取密钥一样。

    要指定服务器 SSL 私钥文件，请设置[`ssl_key`](server-system-variables.html#sysvar_ssl_key)系统变量。

-   [](<>) [`--ssl 模式=*`模式`*`](connection-options.html#option_general_ssl-mode)

    [](<>)

    此选项指定与服务器的连接的所需安全状态。这些模式值是允许的，按照严格程度递增的顺序：

    -   `已禁用`: 建立一个未加密的连接。

    -   `首选`：如果服务器支持加密连接，则建立加密连接，如果无法建立加密连接，则回退到未加密连接。这是默认值，如果[`--ssl 模式`](connection-options.html#option_general_ssl-mode)未指定。

        通过 Unix 套接字文件的连接未使用以下模式加密`首选`.要对 Unix 套接字文件连接强制加密，请使用`必需的`或更严格。（但是，默认情况下，套接字文件传输是安全的，因此加密套接字文件连接会使其不再安全并增加 CPU 负载。）

    -   `必需的`：如果服务器支持加密连接，则建立加密连接。如果无法建立加密连接，则连接尝试会失败。

    -   `验证_CA`： 喜欢`必需的`，但另外根据配置的 CA 证书验证服务器证书颁发机构 (CA) 证书。如果未找到有效的匹配 CA 证书，则连接尝试失败。

    -   `VERIFY_IDENTITY`： 喜欢`验证_CA`，但另外通过检查客户端用于连接到服务器的主机名与服务器发送给客户端的证书中的身份来执行主机名身份验证：

        -   从 MySQL 8.0.12 开始，如果客户端使用 OpenSSL 1.0.2 或更高版本，客户端会检查它用于连接的主机名是否与服务器证书中的 Subject Alternative Name 值或 Common Name 值匹配。主机名身份验证也适用于使用通配符指定公用名的证书。

        -   否则，客户端检查它用于连接的主机名是否与服务器证书中的公用名值匹配。

            如果不匹配，则连接失败。对于加密连接，此选项有助于防止中间人攻击。

            笔记

            主机名身份验证与`VERIFY_IDENTITY`不适用于由服务器自动创建或手动使用的自签名证书[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)（看[第 6.3.3.1 节，“使用 MySQL 创建 SSL 和 RSA 证书和密钥”](creating-ssl-rsa-files-using-mysql.html)）。此类自签名证书不包含服务器名称作为 Common Name 值。

        这[`--ssl 模式`](connection-options.html#option_general_ssl-mode)选项与 CA 证书选项交互如下：

    -   如果[`--ssl 模式`](connection-options.html#option_general_ssl-mode)没有明确设置，使用[`--ssl-ca`](connection-options.html#option_general_ssl-ca)要么[`--ssl-capath`](connection-options.html#option_general_ssl-capath)暗示[`--ssl-mode=VERIFY_CA`](connection-options.html#option_general_ssl-mode).

    -   为了[`--ssl 模式`](connection-options.html#option_general_ssl-mode)的值`验证_CA`要么`VERIFY_IDENTITY`, [`--ssl-ca`](connection-options.html#option_general_ssl-ca)要么[`--ssl-capath`](connection-options.html#option_general_ssl-capath)还需要提供与服务器使用的证书相匹配的 CA 证书。

    -   显式[`--ssl 模式`](connection-options.html#option_general_ssl-mode)选项的值不是`验证_CA`要么`VERIFY_IDENTITY`，连同一个显式的[`--ssl-ca`](connection-options.html#option_general_ssl-ca)要么[`--ssl-capath`](connection-options.html#option_general_ssl-capath)选项，尽管指定了 CA 证书选项，但会产生一个警告，即不执行服务器证书验证。

        要要求 MySQL 帐户使用加密连接，请使用[`创建用户`](create-user.html)创建帐户`需要 SSL`子句，或使用[`更改用户`](alter-user.html)为现有帐户添加`需要 SSL`条款。这会导致使用该帐户的客户端的连接尝试被拒绝，除非 MySQL 支持加密连接并且可以建立加密连接。

        这`要求`子句允许其他与加密相关的选项，这些选项可用于执行更严格的安全要求`需要 SSL`.有关使用使用各种配置的帐户进行连接的客户端可以或必须指定哪些命令选项的更多详细信息`要求`选项，见[创建用户 SSL/TLS 选项](create-user.html#create-user-tls).

-   [](<>) [`--ssl-会话数据=*`文件名`*`](connection-options.html#option_general_ssl-session-data)

    [](<>)

    用于会话重用的 PEM 格式的客户端 SSL 会话数据文件的路径名。

    当您使用以下命令调用 MySQL 客户端程序时[`--ssl-会话数据`](connection-options.html#option_general_ssl-session-data)选项，客户端尝试从文件中反序列化会话数据（如果提供），然后使用它来建立新连接。如果您提供了一个文件，但会话没有被重用，那么连接将失败，除非您还指定了[`--ssl-session-data-continue-on-failed-reuse`](connection-options.html#option_general_ssl-session-data-continue-on-failed-reuse)调用客户端程序时命令行上的选项。

    这[**mysql**](mysql.html)命令，`ssl_session_data_print`，生成会话数据文件（见[第 4.5.1.2 节，“mysql 客户端命令”](mysql-commands.html)）。

-   [](<>) [`ssl-session-data-continue-on-failed-reuse`](connection-options.html#option_general_ssl-session-data-continue-on-failed-reuse)

    [](<>)

    控制是否启动一个新连接来替换一个尝试过但未能重用由[`--ssl-会话数据`](connection-options.html#option_general_ssl-session-data)命令行选项。默认情况下，[`--ssl-session-data-continue-on-failed-reuse`](connection-options.html#option_general_ssl-session-data-continue-on-failed-reuse)命令行选项关闭，这会导致客户端程序在提供会话数据但未重用时返回连接失败。

    为了确保在会话重用失败后打开一个新的、不相关的连接，请调用 MySQL 客户端程序，同时使用[`--ssl-会话数据`](connection-options.html#option_general_ssl-session-data)和[`--ssl-session-data-continue-on-failed-reuse`](connection-options.html#option_general_ssl-session-data-continue-on-failed-reuse)命令行选项。

-   [](<>) [`--tls-ciphersuites=*`密码套件列表`*`](connection-options.html#option_general_tls-ciphersuites)

    [](<>)

    此选项指定客户端允许哪些密码套件用于使用 TLSv1.3 的加密连接。该值是零个或多个以冒号分隔的密码套件名称的列表。例如：

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

    可以为此选项命名的密码套件取决于用于编译 MySQL 的 SSL 库。如果未设置此选项，则客户端允许默认密码套件集。如果该选项设置为空字符串，则不会启用任何密码套件并且无法建立加密连接。有关详细信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

    此选项是在 MySQL 8.0.16 中添加的。

    要指定服务器允许的密码套件，请设置[`tls_ciphersuites`](server-system-variables.html#sysvar_tls_ciphersuites)系统变量。

-   [](<>) [`--tls-版本=*`协议列表`*`](connection-options.html#option_general_tls-version)

    [](<>)

    此选项指定客户端允许加密连接的 TLS 协议。该值是一个或多个以逗号分隔的协议版本的列表。例如：

    ```
    mysql --tls-version="TLSv1.2,TLSv1.3"
    ```

    可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库和 MySQL 服务器版本。

    重要的

    -   自 MySQL 8.0.28 起，对 TLSv1 和 TLSv1.1 连接协议的支持已从 MySQL Server 中删除。这些协议从 MySQL 8.0.26 开始被弃用，但如果使用弃用的 TLS 协议版本，MySQL 服务器客户端不会向用户返回警告。从 MySQL 8.0.28 开始，包括 MySQL Shell 在内的客户端支持[`--tls-版本`](connection-options.html#option_general_tls-version)选项无法使用设置为 TLSv1 或 TLSv1.1 的协议建立 TLS/SSL 连接。如果客户端尝试使用这些协议进行连接，对于 TCP 连接，连接将失败，并向客户端返回错误。对于套接字连接，如果[`--ssl 模式`](connection-options.html#option_general_ssl-mode)被设定为`必需的`, 连接失败，否则建立连接但禁用 TLS/SSL。看[删除对 TLSv1 和 TLSv1.1 协议的支持](encrypted-connection-protocols-ciphers.html#encrypted-connection-deprecated-protocols)了解更多信息。

    -   自 MySQL 8.0.16 起，MySQL Server 支持 TLSv1.3 协议，前提是 MySQL Server 是使用 OpenSSL 1.1.1 或更高版本编译的。服务器在启动时会检查 OpenSSL 的版本，如果低于 1.1.1，则将 TLSv1.3 从与 TLS 版本相关的服务器系统变量的默认值中删除（例如[`tls_version`](server-system-variables.html#sysvar_tls_version)系统变量）。

        应选择允许的协议，以免在列表中留下“漏洞”。例如，这些值没有孔：

    ```
    --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"

    From MySQL 8.0.28, only the last two values are suitable.
    ```

    这些值确实有漏洞，不应使用：

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

    有关详细信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

    要指定服务器允许的 TLS 协议，请设置[`tls_version`](server-system-variables.html#sysvar_tls_version)系统变量。

#### 连接压缩的命令选项

本节介绍使客户端程序能够控制对与服务器的连接使用压缩的选项。有关显示如何使用它们的其他信息和示例，请参阅[第 4.2.8 节，“连接压缩控制”](connection-compression-control.html).

[](<>)

**表 4.5 连接压缩选项摘要**

| 选项名称 | 描述 | 介绍 | 已弃用 |
| ---- | --- | --- | --- |
| [--压缩](connection-options.html#option_general_compress) | 压缩客户端和服务器之间发送的所有信息 |  | 8.0.18 |
| [--压缩算法](connection-options.html#option_general_compression-algorithms) | 允许连接到服务器的压缩算法 | 8.0.18 |  |
| [--zstd-压缩级别](connection-options.html#option_general_zstd-compression-level) | 与使用 zstd 压缩的服务器的连接的压缩级别 | 8.0.18 |  |

-   [](<>) [`- 压缩`](connection-options.html#option_general_compress),`-C`

    [](<>)

    如果可能，压缩客户端和服务器之间发送的所有信息。

    从 MySQL 8.0.18 开始，此选项已弃用。期望它在 MySQL 的未来版本中被删除。看[配置旧版连接压缩](connection-compression-control.html#connection-compression-legacy-configuration).

-   [](<>) [`--压缩算法=*`价值`*`](connection-options.html#option_general_compression-algorithms)

    [](<>)

    连接到服务器的允许压缩算法。可用的算法与[`协议压缩算法`](server-system-variables.html#sysvar_protocol_compression_algorithms)系统变量。默认值为`未压缩`.

    这个选项是在MySQL 8.0.18中添加的。

-   [](<>) [`--压缩级别=*`数量`*`](connection-options.html#option_general_zstd-compression-level)

    [](<>)

    用于连接到使用`zstd`压缩算法。允许的水平从1到22，较大的值表示压缩水平增加。默认值`zstd`压缩级别为3。压缩级别设置对不使用压缩级别的连接没有影响`zstd`压缩。

    这个选项是在MySQL 8.0.18中添加的。
