Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Command Options for Connecting to the Server

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

本节描述了大多数 MySQL 客户端程序支持的连接选项,控制客户端程序如何连接到服务器,是否加密连接和是否压缩连接。这些选项可以在命令行或配置文件中指定。

本节描述了客户端程序如何连接到服务器的选项。关于它们的使用方法和示例,见第6.2.4节,“使用命令选项连接 MySQL 服务器”

表6.4 连接建立选项总结

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

  • --default-auth=plugin

    Command-Line Format --default-auth=plugin
    Type 字符串

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

  • --host=host_name, -h host_name

    Command-Line Format --host=host_name
    Type 字符串
    Default Value localhost

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

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

    Command-Line Format --password[=password]
    Type 字符串
    Default Value [none]

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

    在命令行指定密码应该被认为是不安全的。为了避免将密码写入命令行,使用选项文件。见第8.1.2.1节,“用户密码安全指南”

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

  • --password1[=pass_val]

    Command-Line Format --password1[=password]
    Type String

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

    在命令行指定密码应该被认为是不安全的。为了避免将密码写入命令行,使用选项文件。见第8.1.2.1节,“用户密码安全指南”

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

    --password1--password 是同义词,类似地 --skip-password1--skip-password.

  • --password2[=pass_val]

    Command-Line Format --password2[=密码]
    Type 字符串

    用于连接到服务器的 MySQL 账户的多因素身份验证因子 2 的密码。该选项的语义与 --password1 的语义相似,详见该选项的描述。

  • --password3[=pass_val]

    Command-Line Format --password3[=密码]
    Type 字符串

    用于连接到服务器的 MySQL 账户的多因素身份验证因子 3 的密码。该选项的语义与 --password1 的语义相似,详见该选项的描述。

  • --pipe, -W

    Command-Line Format --pipe
    Type String

    在 Windows 上,使用命名管道连接到服务器。这选项仅适用于服务器启用了named_pipe系统变量以支持命名管道连接。此外,建立连接的用户必须是由named_pipe_full_access_group系统变量指定的 Windows 组。

  • --plugin-dir=dir_name

    Command-Line Format --plugin-dir=dir_name
    Type 目录名称

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

  • --port=port_num, -P port_num

    Command-Line Format --port=port_num
    Type 数字
    Default Value 3306

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

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

    Command-Line Format --protocol=type
    Type 字符串
    Default Value [see text]
    Valid Values

    TCP

    SOCKET

    PIPE

    MEMORY

    这个选项明确指定连接到服务器时使用的传输协议。它在其他连接参数通常导致使用不同协议的情况下非常有用。例如,连接到 localhost 的 Unix 客户端默认使用 Unix 套接字文件:

    mysql --host=localhost

    要强制使用 TCP/IP 传输协议,可以指定一个--protocol选项:

    mysql --host=localhost --protocol=TCP

    以下表格显示了可允许的 --protocol 选项值,并且指示每个值适用的平台。这些值不区分大小写。

    --protocol Value Transport Protocol Used Applicable Platforms
    TCP TCP/IP 传输到本地或远程服务器 所有
    SOCKET Unix 套接字文件传输到本地服务器 Unix 和 Unix 类似系统
    PIPE 本地服务器的命名管道传输 Windows
    MEMORY 本地服务器的共享内存传输 Windows

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

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

    Command-Line Format --shared-memory-base-name=name
    Platform Specific Windows

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

    只有当服务器以启用支持共享内存连接时,才应用这个选项。

  • --socket=path, -S path

    Command-Line Format --socket={file_name|pipe_name}
    Type 字符串

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

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

    在 Windows 上,这个选项仅适用于服务器以启用 named_pipe 系统变量来支持命名管道连接。另外,建立连接的用户必须是由 named_pipe_full_access_group 系统变量指定的 Windows 组成员。

  • --user=user_name, -u user_name

    Command-Line Format --user=user_name
    Type String

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

本节描述了客户端程序是否使用加密连接到服务器、证书和密钥文件名称等加密连接支持相关参数的选项。关于示例用法和检查连接是否加密的信息,请参见第8.3.1节,“使用加密连接”

Note

这些选项只对使用加密传输协议的连接有效,即TCP/IP和Unix socket-file连接。见第6.2.7节,“连接传输协议”

关于使用MySQL C API加密连接,请见支持加密连接

表6.5 连接加密选项总结

Option Name Description
--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

    Command-Line Format --get-server-public-key
    Type 布尔值

    从服务器请求用于RSA密钥对基于密码交换的公钥。这选项适用于使用 caching_sha2_password 认证插件的客户端。对于该插件,服务器除非被请求,不会发送公钥。这选项忽略了不使用该插件认证的账户,也忽略了在安全连接中使用RSA密码交换的情况。

    如果指定了--server-public-key-path=file_name,并且指定了有效的公钥文件,那么它将优先于--get-server-public-key

    关于 caching_sha2_password 插件的信息,请参见第8.4.1.2节,“Caching SHA-2 Pluggable Authentication”

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

    Command-Line Format --server-public-key-path=file_name
    Type 文件名

    客户端文件路径,包含服务器要求的RSA密钥对密码交换所需的公钥副本。该选项适用于使用 sha256_passwordcaching_sha2_password 认证插件的客户端。这一选项对于不使用RSA-based密码交换的客户端无效,例如使用安全连接时。

    如果指定了--server-public-key-path=file_name,并且指定了有效的公钥文件,那么它将优先于--get-server-public-key

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

    关于 sha256_passwordcaching_sha2_password 插件的信息,请参见第8.4.1.3节,“SHA-256 可插拔认证”,和第8.4.1.2节,“Caching SHA-2 可插拔认证”

  • --ssl-ca=file_name

    Command-Line Format --ssl-ca=file_name
    Type 文件名

    PEM格式的证书授权机构(CA)文件路径名。该文件包含了可信任的SSL证书授权机构列表。

    在建立加密连接到服务器时,指定不使用--ssl-ca--ssl-capath,服务器仍然根据客户端账户的任何适用要求验证客户端,并且仍然使用服务器端指定的ssl_cassl_capath系统变量值。

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

  • --ssl-capath=dir_name

    Command-Line Format --ssl-capath=dir_name
    Type 目录名

    包含PEM格式SSL证书授权机构(CA)文件的目录路径名。

    在建立加密连接到服务器时,客户端不验证服务器证书,可以不指定--ssl-ca--ssl-capath。服务器仍然根据客户端账户的任何适用要求验证客户端,并且仍然使用服务器端指定的ssl_cassl_capath系统变量值。

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

  • --ssl-cert=file_name

    Command-Line Format --ssl-cert=file_name
    Type 文件名

    客户端SSL公共密钥证书文件的路径名,支持链式SSL证书。

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

  • --ssl-cipher=cipher_list

    Command-Line Format --ssl-cipher=name
    Type 字符串

    TLSv1.2 协议连接的加密cipher列表。如果列表中没有支持的cipher,使用这些TLS协议的加密连接将不工作。

    为了最大化可移植性,cipher_list 应该是一个或多个cipher名称,使用冒号分隔。示例:

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

    OpenSSL 文档中描述的加密cipher语法在https://www.openssl.org/docs/manmaster/man1/ciphers.html 中有描述。

    关于 MySQL 支持的加密cipher信息,见第8.3.2节,“加密连接 TLS 协议和cipher”

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

  • --ssl-crl=file_name

    Command-Line Format --ssl-crl=file_name
    Type 文件名

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

    如果既没有--ssl-crl 也没有--ssl-crlpath,即使 CA 路径包含证书撤销列表,也不执行 CRL 检查。

    为服务器指定撤销列表文件,设置ssl_crl系统变量。

  • --ssl-crlpath=dir_name

    Command-Line Format --ssl-crlpath=dir_name
    Type 目录名称

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

    如果既没有--ssl-crl也没有--ssl-crlpath,即使CA路径包含证书撤销列表,也不执行CRL检查。

    为服务器指定撤销目录,设置ssl_crlpath系统变量。

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

    Command-Line Format --ssl-fips-mode={OFF|ON|STRICT}
    Deprecated
    Type 枚举值
    Default Value OFF
    Valid Values

    OFF

    ON

    STRICT

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

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

    • OFF: 禁用FIPS模式。

    • ON: 启用FIPS模式。

    • STRICT: 启用“严格”FIPS模式。

    Note

    如果OpenSSL FIPS Object Module不可用,那么--ssl-fips-mode的唯一允许值是OFF。在这种情况下,设置--ssl-fips-modeONSTRICT将导致客户端在启动时产生警告,并且以非FIPS模式操作。

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

  • --ssl-key=file_name

    Command-Line Format --ssl-key=file_name
    Type 文件名

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

    如果密钥文件被保护密码,客户程序将提示用户输入密码。密码不能存储在文件中。如果密码错误,程序继续像无法读取密钥一样。

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

  • --ssl-mode=mode

    Command-Line Format --ssl-mode=mode
    Type 枚举值
    Default Value PREFERRED
    Valid Values

    DISABLED

    PREFERRED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

    这个选项指定了连接到服务器的安全状态。这些模式值按严格性递增排序:

    • DISABLED:建立未加密连接。

    • PREFERRED: 如果服务器支持加密连接,建立加密连接;否则,建立非加密连接。如果没有指定--ssl-mode,这是默认值。

      Unix socket 文件连接不使用PREFERRED模式。要强制加密 Unix socket 文件连接,使用REQUIRED或更严格的模式(然而,socket 文件传输是默认安全的,所以加密 socket 文件连接并不会增加安全性,反而会增加 CPU 负载)。

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

    • VERIFY_CA: 和REQUIRED类似,但还会验证服务器证书颁发机构(CA)证书是否与配置的 CA 证书相匹配。连接尝试失败如果找不到有效的匹配 CA 证书。

    • VERIFY_IDENTITY: 和VERIFY_CA类似,但还会对客户端用于连接服务器的主机名进行身份验证,检查客户端用于连接的主机名是否与服务器发送给客户端的证书中的身份相匹配:

      • 如果客户端使用 OpenSSL 1.0.2 或更高版本,客户端会检查客户端用于连接的主机名是否与服务器证书中的主体备用名称值或常见名称值相匹配。主机名身份验证也可以与指定通配符的常见名称值一起工作。

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

      如果不匹配,连接将失败。对于加密连接,这个选项可以防止中间人攻击。

      Note

      使用 VERIFY_IDENTITY 的主机名身份验证不工作于服务器自动创建的自签名证书(见第8.3.3.1节,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”)。这些自签名证书不包含服务器名称作为常用名称值。

    Important

    默认设置--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 选项配置账户的客户端必须指定哪些命令选项,见CREATE USER SSL/TLS 选项

  • --ssl-session-data=file_name

    Command-Line Format --ssl-session-data=file_name
    Type 文件名

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

    当您使用 MySQL 客户端程序时,带有--ssl-session-data选项,客户端将尝试从文件中反序列化会话数据,如果提供了文件,然后使用它来建立新的连接。如果您提供了文件,但会话不被重用,那么连接将失败,除非在调用客户端程序时也指定了--ssl-session-data-continue-on-failed-reuse选项。

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

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

    Command-Line Format --ssl-session-data-continue-on-failed-reuse
    Type 布尔值
    Default Value OFF

    控制是否启动一个新的连接来替换尝试重新使用会话数据的连接,该连接之前尝试了但失败了使用--ssl-session-data命令行选项指定的会话数据。默认情况下,--ssl-session-data-continue-on-failed-reuse命令行选项是关闭的,这样客户端程序将在会话数据不被重新使用时返回连接失败。

    为了确保在会话重用失败后打开一个新的、无关联的连接,invoke MySQL 客户端程序同时使用--ssl-session-data--ssl-session-data-continue-on-failed-reuse命令行选项。

  • --tls-ciphersuites=ciphersuite_list

    Command-Line Format --tls-ciphersuites=ciphersuite_list
    Type String
    Default Value empty string

    这个选项指定了客户端允许的加密连接使用 TLSv1.3 的 ciphersuites。值是一个或多个以冒号分隔的 ciphersuite 名称,例如:

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

    该选项的加密套件名称取决于用于编译 MySQL 的 SSL 库。如果不设置该选项,客户端允许默认的加密套件集。如果将该选项设置为空字符串,则无法建立加密连接。更多信息,请见第8.3.2节,“加密连接 TLS 协议和加密套件”

    要指定服务器允许的加密套件,设置tls_ciphersuites系统变量。

  • --tls-version=protocol_list

    Command-Line Format --tls-version=protocol_list
    Type 字符串
    Default Value

    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 服务器版本。

    Important
    • 支持TLS/SSL连接的客户端,包括 MySQL Shell,如果设置了--tls-version选项,则不能使用 TLSv1 或 TLSv1.1 协议。如果客户端尝试使用这些协议,TCP 连接将失败,并返回错误;对于 socket 连接,如果设置了--ssl-modeREQUIRED,连接失败;否则,连接建立,但 TLS/SSL disabled。详见TLSv1 和 TLSv1.1 协议的支持移除

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

    允许的协议应该选择不留下空隙。例如,这些值没有空隙:

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

    详见第 8.3.2 节,“加密连接 TLS 协议和加密方式”

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

本节描述了客户端程序控制连接到服务器的压缩选项。关于如何使用它们的详细信息和示例,请参见第6.2.8节,“连接压缩控制”

表6.6 连接压缩选项总结

Option Name Description
--compress 客户端和服务器之间发送所有信息
--compression-algorithms 连接到服务器的允许压缩算法
--zstd-compression-level 使用zstd压缩的连接服务器的压缩级别

  • --compress, -C

    Command-Line Format --compress[={OFF|ON}]
    Deprecated
    Type 布尔值
    Default Value OFF

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

    这个选项已经废弃。预计将在 MySQL 的未来版本中删除。请参阅配置遗留连接压缩

  • --compression-algorithms=value

    Command-Line Format --compression-algorithms=value
    Type 设置
    Default Value 不压缩
    Valid Values

    zlib

    zstd

    不压缩

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

  • --zstd-compression-level=level

    Command-Line Format --zstd-compression-level=#
    Type 整数

    用于连接到服务器的压缩级别,使用zstd压缩算法。允许的级别从1到22,较大的值表示更高的压缩级别。默认的zstd压缩级别是3。没有使用zstd压缩的连接设置压缩级别无效。