文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  连接到服务器的命令选项

6.2.3 连接到服务器的命令选项

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

连接建立的命令选项

本节介绍控制客户端程序如何建立到服务器的连接的选项。有关更多信息和使用示例,请参见 第 6.2.4 节“使用命令选项连接到 MySQL 服务器”

表 6.4 连接建立选项摘要

选项名称 描述
--default-auth 要使用的身份验证插件
--host MySQL 服务器所在的宿主
--password 连接到服务器时要使用的密码
--password1 连接到服务器时要使用的第一个多因素身份验证密码
--password2 连接到服务器时要使用的第二个多因素身份验证密码
--password3 连接到服务器时要使用的第三个多因素身份验证密码
--pipe 使用命名管道连接到服务器(仅限 Windows)
--plugin-dir 安装插件的目录
--port 连接的 TCP/IP 端口号
--protocol 要使用的传输协议
--shared-memory-base-name 共享内存连接的共享内存名称(仅限 Windows)
--socket 要使用的 Unix 套接字文件或 Windows 命名管道
--user 连接到服务器时要使用的 MySQL 用户名

  • --default-auth=plugin

    命令行格式 --default-auth=plugin
    类型 字符串

    有关要使用哪个客户端身份验证插件的提示。请参见 第 8.2.17 节“可插拔身份验证”

  • --host=host_name, -h host_name

    命令行格式 --host=host_name
    类型 字符串
    默认值 localhost

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

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

    命令行格式 --password[=password]
    类型 字符串
    默认值 [无]

    用于连接到服务器的 MySQL 帐户的密码。密码值是可选的。如果没有给出,客户端程序将提示输入密码。如果给出,--password=-p 后面的密码之间必须 没有空格。如果没有指定密码选项,默认情况下不发送密码。

    在命令行上指定密码被认为是不安全的。为了避免在命令行上给出密码,请使用选项文件。请参见 第 8.1.2.1 节“密码安全的用户指南”

    要明确指定没有密码并且客户端程序不应提示输入密码,请使用 --skip-password 选项。

  • --password1[=pass_val]

    命令行格式 --password1[=password]
    类型 字符串

    用于连接到服务器的 MySQL 帐户的多因素身份验证因子 1 的密码。密码值是可选的。如果没有给出,客户端程序将提示输入密码。如果给出,--password1= 后面的密码之间必须 没有空格。如果没有指定密码选项,默认情况下不发送密码。

    在命令行上指定密码被认为是不安全的。为了避免在命令行上给出密码,请使用选项文件。请参见 第 8.1.2.1 节“密码安全的用户指南”

    要明确指定没有密码并且客户端程序不应提示输入密码,请使用 --skip-password1 选项。

    --password1--password 是同义词,--skip-password1--skip-password 也是同义词。

  • --password2[=pass_val]

    命令行格式 --password2[=password]
    类型 字符串

    用于连接到服务器的 MySQL 帐户的多因素身份验证因子 2 的密码。此选项的语义类似于 --password1 的语义;有关详细信息,请参见该选项的说明。

  • --password3[=pass_val]

    命令行格式 --password3[=password]
    类型 字符串

    用于连接到服务器的 MySQL 帐户的多因素身份验证因子 3 的密码。此选项的语义类似于 --password1 的语义;有关详细信息,请参见该选项的说明。

  • --pipe, -W

    命令行格式 --pipe
    类型 字符串

    在 Windows 上,使用命名管道连接到服务器。此选项仅在服务器使用 named_pipe 系统变量启动以支持命名管道连接时适用。此外,进行连接的用户必须是 named_pipe_full_access_group 系统变量指定的 Windows 组的成员。

  • --plugin-dir=dir_name

    命令行格式 --plugin-dir=dir_name
    类型 目录名

    用于查找插件的目录。如果使用 --default-auth 选项指定身份验证插件,但客户端程序找不到它,请指定此选项。参见 第 8.2.17 节,“可插拔身份验证”

  • --port=port_num, -P port_num

    命令行格式 --port=port_num
    类型 数字
    默认值 3306

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

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

    命令行格式 --protocol=type
    类型 字符串
    默认值 [参见文本]
    有效值

    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

    另见 第 6.2.7 节,“连接传输协议”

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

    命令行格式 --shared-memory-base-name=name
    平台特定 Windows

    在 Windows 上,使用共享内存连接到本地服务器时要使用的共享内存名称。默认值为 MYSQL。共享内存名称区分大小写。

    此选项仅在服务器使用启用的 shared_memory 系统变量启动时才适用,以支持共享内存连接。

  • --socket=path, -S path

    命令行格式 --socket={file_name|pipe_name}
    类型 字符串

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

    在 Windows 上,连接到本地服务器时要使用的命名管道的名称。默认 Windows 管道名称为 MySQL。管道名称不区分大小写。

    在 Windows 上,此选项仅在服务器使用启用的 named_pipe 系统变量启动时才适用,以支持命名管道连接。此外,进行连接的用户必须是 named_pipe_full_access_group 系统变量指定的 Windows 组的成员。

  • --user=user_name, -u user_name

    命令行格式 --user=user_name
    类型 字符串

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

加密连接的命令选项

本节介绍用于客户端程序的选项,这些选项指定是否使用加密连接到服务器,证书和密钥文件的名称以及与加密连接支持相关的其他参数。有关建议使用情况以及如何检查连接是否已加密的示例,请参见 第 8.3.1 节,“配置 MySQL 使用加密连接”

注意

这些选项仅对使用易受加密影响的传输协议的连接有效;也就是说,TCP/IP 和 Unix 套接字文件连接。参见 第 6.2.7 节,“连接传输协议”

有关从 MySQL C API 使用加密连接的信息,请参见 加密连接支持

表 6.5 连接加密选项摘要

选项名称 描述
--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 连接到服务器所需的安全性状态
--ssl-session-data 包含 SSL 会话数据的文件
--ssl-session-data-continue-on-failed-reuse 会话重用失败时是否建立连接
--tls-ciphersuites 加密连接的允许 TLSv1.3 密码套件
--tls-version 加密连接的允许 TLS 协议

  • --get-server-public-key

    命令行格式 --get-server-public-key
    类型 布尔值

    向服务器请求用于基于 RSA 密钥对的密码交换的公钥。此选项适用于使用 caching_sha2_password 身份验证插件进行身份验证的客户端。对于该插件,服务器不会发送公钥,除非请求。此选项将被忽略,适用于未使用该插件进行身份验证的帐户。如果未使用基于 RSA 的密码交换,则也会被忽略,例如当客户端使用安全连接连接到服务器时。

    如果给出 --server-public-key-path=file_name 并指定有效公钥文件,则它优先于 --get-server-public-key

    有关 caching_sha2_password 插件的信息,请参见 第 8.4.1.2 节,“缓存 SHA-2 可插拔身份验证”

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

    命令行格式 --server-public-key-path=file_name
    类型 文件名

    包含服务器用于基于 RSA 密钥对的密码交换的公钥的客户端副本的 PEM 格式文件的路径名。此选项适用于使用 sha256_password(已弃用)或 caching_sha2_password 身份验证插件进行身份验证的客户端。此选项将被忽略,适用于未使用这些插件之一进行身份验证的帐户。如果未使用基于 RSA 的密码交换,则也会被忽略,例如当客户端使用安全连接连接到服务器时。

    如果给出 --server-public-key-path=file_name 并指定有效公钥文件,则它优先于 --get-server-public-key

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

    有关 sha256_password(已弃用)和 caching_sha2_password 插件的信息,请参见 第 8.4.1.3 节,“SHA-256 可插拔身份验证”第 8.4.1.2 节,“缓存 SHA-2 可插拔身份验证”

  • --ssl-ca=file_name

    命令行格式 --ssl-ca=file_name
    类型 文件名

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

    要告诉客户端在建立加密连接到服务器时不要对服务器证书进行身份验证,请不要指定 --ssl-ca--ssl-capath。服务器仍然根据为客户端帐户建立的任何适用要求验证客户端,并且仍然使用服务器端指定的任何 ssl_cassl_capath 系统变量值。

    要指定服务器的 CA 文件,请设置 ssl_ca 系统变量。

  • --ssl-capath=dir_name

    命令行格式 --ssl-capath=dir_name
    类型 目录名

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

    要告诉客户端在建立加密连接到服务器时不要对服务器证书进行身份验证,请不要指定 --ssl-ca--ssl-capath。服务器仍然根据为客户端帐户建立的任何适用要求验证客户端,并且仍然使用服务器端指定的任何 ssl_cassl_capath 系统变量值。

    要指定服务器的 CA 目录,请设置 ssl_capath 系统变量。

  • --ssl-cert=file_name

    命令行格式 --ssl-cert=file_name
    类型 文件名

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

    要指定服务器 SSL 公钥证书文件,请设置 ssl_cert 系统变量。

  • --ssl-cipher=cipher_list

    命令行格式 --ssl-cipher=name
    类型 字符串

    使用 TLS 协议(直至 TLSv1.2)的连接的允许加密密码列表。如果列表中没有支持的密码,则使用这些 TLS 协议的加密连接将无法正常工作。

    为了最大程度地提高可移植性,cipher_list 应该是一个或多个密码名称的列表,用冒号分隔。示例

    --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 支持哪些加密密码的信息,请参见 第 8.3.2 节,“加密连接 TLS 协议和密码”

    要指定服务器的加密密码,请设置 ssl_cipher 系统变量。

  • --ssl-crl=file_name

    命令行格式 --ssl-crl=file_name
    类型 文件名

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

    如果没有给出 --ssl-crl--ssl-crlpath,则不会执行 CRL 检查,即使 CA 路径包含证书吊销列表。

    要指定服务器的吊销列表文件,请设置 ssl_crl 系统变量。

  • --ssl-crlpath=dir_name

    命令行格式 --ssl-crlpath=dir_name
    类型 目录名

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

    如果没有给出 --ssl-crl--ssl-crlpath,则不会执行 CRL 检查,即使 CA 路径包含证书吊销列表。

    要指定服务器的吊销列表目录,请设置 ssl_crlpath 系统变量。

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

    命令行格式 --ssl-fips-mode={OFF|ON|STRICT}
    已弃用
    类型 枚举
    默认值 关闭
    有效值

    关闭

    打开

    严格

    控制是否在客户端启用 FIPS 模式。 --ssl-fips-mode 选项与其他 --ssl-xxx 选项不同,因为它不用于建立加密连接,而是用于影响允许哪些加密操作。请参见 第 8.8 节“FIPS 支持”

    这些 --ssl-fips-mode 值是允许的

    • 关闭: 禁用 FIPS 模式。

    • 打开: 启用 FIPS 模式。

    • 严格: 启用 严格 FIPS 模式。

    注意

    如果 OpenSSL FIPS 对象模块不可用,则 --ssl-fips-mode 唯一允许的值是 关闭。在这种情况下,将 --ssl-fips-mode 设置为 打开严格 会导致客户端在启动时产生警告并在非 FIPS 模式下运行。

    要指定服务器的 FIPS 模式,请设置 ssl_fips_mode 系统变量。

  • --ssl-key=file_name

    命令行格式 --ssl-key=file_name
    类型 文件名

    客户端 SSL 私钥文件的路径名,采用 PEM 格式。为了更好的安全性,请使用至少 2048 位 RSA 密钥的证书。

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

    要指定服务器 SSL 私钥文件,请设置 ssl_key 系统变量。

  • --ssl-mode=mode

    命令行格式 --ssl-mode=mode
    类型 枚举
    默认值 首选
    有效值

    禁用

    首选

    必需

    验证 CA

    验证身份

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

    • 禁用: 建立未加密的连接。

    • 首选: 如果服务器支持加密连接,则建立加密连接,如果无法建立加密连接,则回退到未加密连接。如果未指定 --ssl-mode,这是默认设置。

      通过 Unix 套接字文件的连接不会使用 首选 模式加密。要强制对 Unix 套接字文件连接进行加密,请使用 必需 模式或更严格的模式。(但是,套接字文件传输默认情况下是安全的,因此加密套接字文件连接不会使其更安全,并且会增加 CPU 负载。)

    • 必需: 如果服务器支持加密连接,则建立加密连接。如果无法建立加密连接,则连接尝试将失败。

    • 验证 CA: 类似于 必需,但此外还会根据配置的 CA 证书验证服务器证书颁发机构 (CA) 证书。如果未找到有效的匹配 CA 证书,则连接尝试将失败。

    • 验证身份: 类似于 验证 CA,但此外还会通过检查客户端用于连接到服务器的主机名与服务器发送给客户端的证书中的身份是否匹配来执行主机名身份验证

      • 如果客户端使用 OpenSSL 1.0.2 或更高版本,则客户端会检查它用于连接的主机名是否与服务器证书中的主题备用名称值或通用名称值匹配。主机名身份验证也适用于使用通配符指定通用名称的证书。

      • 否则,客户端会检查它用于连接的主机名是否与服务器证书中的通用名称值匹配。

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

      注意

      使用 验证身份 进行的主机名身份验证不适用于服务器自动创建的自签名证书(请参见 第 8.3.3.1 节“使用 MySQL 创建 SSL 和 RSA 证书和密钥”)。此类自签名证书不包含服务器名称作为通用名称值。

    重要

    默认设置 --ssl-mode=首选 会在其他默认设置不变的情况下产生加密连接。但是,为了帮助防止复杂的中间人攻击,客户端验证服务器身份非常重要。设置 --ssl-mode=验证 CA--ssl-mode=验证身份 比默认设置更能帮助防止这种类型的攻击。要实现其中一个设置,您必须首先确保服务器的 CA 证书可以可靠地提供给使用它的所有客户端,否则可用性问题将导致结果。出于这个原因,它们不是默认设置。

    --ssl-mode 选项与 CA 证书选项之间的交互方式如下

    要要求 MySQL 帐户使用加密连接,请使用 CREATE USER 创建带有 REQUIRE SSL 子句的帐户,或使用 ALTER USER 为现有帐户添加 REQUIRE SSL 子句。这会导致使用该帐户的客户端的连接尝试被拒绝,除非 MySQL 支持加密连接并且可以建立加密连接。

    REQUIRE 子句允许使用其他加密相关选项,这些选项可用于强制执行比 REQUIRE SSL 更严格的安全要求。有关使用配置了各种 REQUIRE 选项的帐户连接的客户端可能或必须指定哪些命令选项的更多详细信息,请参见 CREATE USER SSL/TLS 选项

  • --ssl-session-data=file_name

    命令行格式 --ssl-session-data=file_name
    类型 文件名

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

    使用 --ssl-session-data 选项调用 MySQL 客户端程序时,客户端会尝试从文件中反序列化会话数据(如果提供),然后使用它来建立新连接。如果提供文件,但未重用会话,则连接将失败,除非您还在调用客户端程序时在命令行上指定了 --ssl-session-data-continue-on-failed-reuse 选项。

    mysql 命令 ssl_session_data_print 会生成会话数据文件(请参见 第 6.5.1.2 节“mysql 客户端命令”)。

  • ssl-session-data-continue-on-failed-reuse

    命令行格式 --ssl-session-data-continue-on-failed-reuse
    类型 布尔值
    默认值 关闭

    控制是否启动新的连接来替换尝试过但未能重用使用 --ssl-session-data 命令行选项指定的会话数据的连接尝试。默认情况下,--ssl-session-data-continue-on-failed-reuse 命令行选项处于关闭状态,这会导致客户端程序在提供会话数据但未重用时返回连接失败。

    要确保在会话重用失败后静默打开新的、无关的连接,请使用 --ssl-session-data--ssl-session-data-continue-on-failed-reuse 命令行选项调用 MySQL 客户端程序。

  • --tls-ciphersuites=ciphersuite_list

    命令行格式 --tls-ciphersuites=ciphersuite_list
    类型 字符串
    默认值 空字符串

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

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

    可以为此选项命名的密码套件取决于用于编译 MySQL 的 SSL 库。如果未设置此选项,则客户端允许使用默认的密码套件集。如果将该选项设置为空字符串,则不会启用任何密码套件,并且无法建立加密连接。有关更多信息,请参见 第 8.3.2 节“加密连接 TLS 协议和密码”

    要指定服务器允许哪些密码套件,请设置 tls_ciphersuites 系统变量。

  • --tls-version=protocol_list

    命令行格式 --tls-version=protocol_list
    类型 字符串
    默认值

    TLSv1,TLSv1.1,TLSv1.2,TLSv1.3(OpenSSL 1.1.1 或更高版本)

    TLSv1,TLSv1.1,TLSv1.2(其他情况)

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

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

    可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库,以及 MySQL Server 版本。

    重要
    • 支持 --tls-version 选项的客户端(包括 MySQL Shell)无法与协议设置为 TLSv1 或 TLSv1.1 的服务器建立 TLS/SSL 连接。如果客户端尝试使用这些协议连接,则对于 TCP 连接,连接将失败,并且会将错误返回给客户端。对于套接字连接,如果将 --ssl-mode 设置为 必需,则连接将失败,否则连接将建立,但 TLS/SSL 将被禁用。有关更多信息,请参见 对 TLSv1 和 TLSv1.1 协议的支持移除

    • MySQL 服务器支持 TLSv1.3 协议,前提是 MySQL 服务器使用 OpenSSL 1.1.1 或更高版本编译。服务器在启动时会检查 OpenSSL 的版本,如果低于 1.1.1,则会从与 TLS 版本相关的服务器系统变量的默认值中移除 TLSv1.3(例如,tls_version 系统变量)。

    应选择允许的协议,使其在列表中不留“漏洞”。例如,以下值没有漏洞

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

    有关详细信息,请参阅 第 8.3.2 节,“加密连接 TLS 协议和密码”

    要指定服务器允许的 TLS 协议,请设置 tls_version 系统变量。

连接压缩的命令选项

本节介绍允许客户端程序控制与服务器连接压缩使用的选项。有关更多信息和使用示例,请参阅 第 6.2.8 节,“连接压缩控制”

表 6.6 连接压缩选项摘要

选项名称 描述
--compress 压缩客户端和服务器之间发送的所有信息
--compression-algorithms 与服务器连接的允许压缩算法
--zstd-compression-level 使用 zstd 压缩的与服务器连接的压缩级别

  • --compress-C

    命令行格式 --compress[={OFF|ON}]
    已弃用
    类型 布尔值
    默认值 关闭

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

    此选项已弃用。预计将在未来版本的 MySQL 中删除。请参阅 配置传统连接压缩

  • --compression-algorithms=value

    命令行格式 --compression-algorithms=value
    类型 设置
    默认值 uncompressed
    有效值

    zlib

    zstd

    uncompressed

    与服务器连接的允许压缩算法。可用算法与 protocol_compression_algorithms 系统变量相同。默认值为 uncompressed

  • --zstd-compression-level=level

    命令行格式 --zstd-compression-level=#
    类型 整数

    对使用 zstd 压缩算法的与服务器连接使用的压缩级别。允许的级别为 1 到 22,值越大表示压缩级别越高。默认 zstd 压缩级别为 3。压缩级别设置对不使用 zstd 压缩的连接没有影响。