文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


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

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.1 节“缓存 SHA-2 可插拔身份验证”

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

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

    包含 PEM 格式文件的路径名,该文件包含服务器基于 RSA 密钥对的密码交换所需的公钥的客户端副本。此选项适用于使用 sha256_passwordcaching_sha2_password 身份验证插件进行身份验证的客户端。对于未使用其中一种插件进行身份验证的帐户,将忽略此选项。如果未使用基于 RSA 的密码交换(例如当客户端使用安全连接连接到服务器时),也将忽略此选项。

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

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

    有关 sha256_passwordcaching_sha2_password 插件的信息,请参见 第 8.4.1.2 节“SHA-256 可插拔身份验证”第 8.4.1.1 节“缓存 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}
    已弃用
    类型 枚举
    默认值 OFF
    有效值

    OFF

    ON

    STRICT

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

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

    • OFF:禁用 FIPS 模式。

    • ON:启用 FIPS 模式。

    • STRICT:启用严格 FIPS 模式。

    注意

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

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

  • --ssl-key=file_name

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

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

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

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

  • --ssl-mode=mode

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

    DISABLED

    PREFERRED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

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

    • DISABLED:建立未加密的连接。

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

      Unix 套接字文件上的连接不会使用 PREFERRED 模式进行加密。要对 Unix 套接字文件连接强制加密,请使用 REQUIRED 或更严格的模式。(但是,默认情况下,套接字文件传输是安全的,因此加密套接字文件连接不会使其更加安全,反而会增加 CPU 负载。)

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

    • VERIFY_CA:与 REQUIRED 类似,但还要根据配置的 CA 证书验证服务器证书颁发机构 (CA) 证书。如果未找到有效的匹配 CA 证书,则连接尝试失败。

    • VERIFY_IDENTITY:与 VERIFY_CA 类似,但还要通过检查客户端用于连接到服务器的主机名与服务器发送给客户端的证书中的标识来执行主机名标识验证

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

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

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

      注意

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

    重要

    默认设置 --ssl-mode=PREFERRED 会在其他默认设置不变的情况下生成加密连接。但是,为了帮助防止复杂的中间人攻击,客户端验证服务器的身份非常重要。设置 --ssl-mode=VERIFY_CA--ssl-mode=VERIFY_IDENTITY 比默认设置更有助于防止此类攻击。要实现其中一种设置,您必须首先确保服务器的 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
    类型 文件名

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

    当您使用 --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
    类型 布尔值
    默认值 OFF

    控制是否启动新连接来替换尝试但未能重用使用 --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 服务器版本。

    重要
    • 支持 --tls-version 选项的客户端(包括 MySQL Shell)无法建立将协议设置为 TLSv1 或 TLSv1.1 的 TLS/SSL 连接。如果客户端尝试使用这些协议进行连接,则对于 TCP 连接,连接将失败,并向客户端返回错误。对于套接字连接,如果 --ssl-mode 设置为 REQUIRED,则连接将失败,否则将建立连接,但会禁用 TLS/SSL。有关详细信息,请参阅删除对 TLSv1 和 TLSv1.1 协议的支持

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

    选择的允许协议应确保列表中没有“漏洞”。例如,以下值没有漏洞

    --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}]
    已弃用
    类型 布尔值
    默认值 OFF

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

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

  • --compression-algorithms=

    命令行格式 --compression-algorithms=值
    类型 设置
    默认值 未压缩
    有效值

    zlib

    zstd

    未压缩

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

  • --zstd-compression-level=级别

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

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