Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 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)
--plugin-dir 插件安装的目录
--port TCP/IP 端口号用于连接
--protocol 要使用的传输协议
--shared-memory-base-name 共享内存名称(仅适用于 Windows)
--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 字符串

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

    在命令行中指定密码应该被认为是不安全的。要避免在命令行中输入密码,请使用选项文件。请参阅 第 8.1.2.1 节,“最终用户密码安全指南”

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

    --password1--password 是同义的,如同 --skip-password1--skip-password

  • --password2[=pass_val]

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

    用于连接到服务器的 MySQL 帐户的多因素身份验证因子 2 的密码。该选项的语义与 --password1 的语义相似;请参阅该选项的描述以获取详细信息。

  • --password3[=pass_val]

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

    多因素身份验证的 MySQL 帐户密码,用于连接到服务器。该选项的语义与 --password1 选项的语义相似;请参阅该选项的描述以获取详细信息。

  • --pipe, -W

    Command-Line Format --pipe
    Type 字符串

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

  • --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 [见文本]
    Valid Values

    TCP

    SOCKET

    PIPE

    MEMORY

    此选项明确指定了连接到服务器时使用的传输协议。这在其他连接参数通常导致使用其他协议时非常有用。例如,在 Unix 上连接到 localhost 时,默认使用 Unix 套接字文件:

    mysql --host=localhost

    要强制使用 TCP/IP 传输协议,而不是默认的 Unix 套接字文件,请指定 --protocol 选项:

    mysql --host=localhost --protocol=TCP

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

    --protocol Value Transport Protocol Used Applicable Platforms
    TCP TCP/IP 传输到本地或远程服务器 所有
    SOCKET Unix 套接字文件传输到本地服务器 Unix 和 Unix-like 系统
    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。共享内存名称区分大小写。

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

  • --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 系统变量启用以支持命名管道连接的情况下生效。此外,进行连接的用户必须是 Windows 组 named_pipe_full_access_group 系统变量指定的成员。

  • --user=用户名, -u 用户名

    Command-Line Format --user=用户名
    Type 字符串

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

加密连接选项

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

Note

这些选项仅对使用受加密影响的传输协议的连接生效,即 TCP/IP 和 Unix 套接字文件连接。请参阅 第 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 可插拔身份验证”

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

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

    包含服务器所需的 RSA 密钥对基于密码交换的客户端副本的文件路径名,以 PEM 格式。该选项适用于使用 sha256_passwordcaching_sha2_password 身份验证插件的客户端。对于不使用这些插件的账户,该选项将被忽略。如果客户端使用安全连接连接到服务器,RSA 基于密码交换将不被使用,因此该选项也将被忽略。

    如果 --服务器公钥路径=文件名 被指定并指定了有效的公钥文件,它将优先于 --获取服务器公钥

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

    有关 sha256_passwordcaching_sha2_password 插件的信息,请参阅 第 8.4.1.3 节,“SHA-256 可插拔身份验证”第 8.4.1.2 节,“Caching SHA-2 可插拔身份验证”

  • --ssl-ca=文件名

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

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

    要告诉客户端在与服务器建立加密连接时不验证服务器证书,请指定 neither --ssl-ca nor --ssl-capath。服务器仍将根据客户端账户的相关要求验证客户端,并使用服务器端指定的任何 ssl_cassl_capath 系统变量值。

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

  • --ssl-capath=目录名

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

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

    要告诉客户端在与服务器建立加密连接时不验证服务器证书,请不要指定 --ssl-ca--ssl-capath。服务器仍将根据客户端账户的相关要求验证客户端,并使用服务器端指定的任何 ssl_cassl_capath 系统变量值。

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

  • --ssl-cert=文件名

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

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

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

  • --ssl-cipher=密码列表

    Command-Line Format --ssl-cipher=名称
    Type 字符串

    使用 TLS 协议的连接的允许加密密码列表。如果列表中没有支持的密码,使用这些 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 支持的加密密码的信息,请参阅 第 8.3.2 节,“加密连接 TLS 协议和密码”

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

  • --ssl-crl=文件名

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

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

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

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

  • --ssl-crlpath=目录名

    Command-Line Format --ssl-crlpath=目录名
    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-fips-mode 选项不同于其他 --ssl-xxx 选项,因为它不是用于建立加密连接,而是影响允许哪些加密操作。请参阅 第 8.8 节,“FIPS 支持”

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

    • OFF:禁用 FIPS 模式。

    • ON:启用 FIPS 模式。

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

    Note

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

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

  • --ssl-key=file_name

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

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

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

    要指定服务器 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

    此选项指定了与服务器的连接的所需安全状态。这些模式值是允许的,以增加的严格性顺序:

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

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

      Unix套接字文件连接不使用首选模式加密。要强制加密Unix套接字文件连接,请使用必需或更严格的模式。(然而,套接字文件传输默认是安全的,因此加密套接字文件连接不会使其更加安全,并增加了CPU负载。)

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

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

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

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

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

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

      Note

      主机名身份验证与 VERIFY_IDENTITY 不适用于使用 mysql_ssl_rsa_setup (见 第 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 SSL 更严格的安全要求。有关客户端使用帐户配置的各种 REQUIRE 选项时可能或必须指定的命令选项的详细信息,请参阅 CREATE USER SSL/TLS 选项

  • --ssl-session-data=file_name

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

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

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

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

  • SSL会话数据继续失败重用

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

    控制是否启动新的连接以替换尝试但失败的连接,该连接尝试重新使用指定的SSL会话数据,使用 --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

    Command-Line Format --tls-ciphersuites=ciphersuite_list
    Type 字符串
    Default Value 空字符串

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

    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 or higher)

    TLSv1,TLSv1.1,TLSv1.2 (otherwise)

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

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

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

    Important
    • 包括 MySQL Shell 在内的客户端支持 --tls-version 选项的客户端无法使用 TLSv1 或 TLSv1.1 协议版本进行 TLS/SSL 连接。如果客户端尝试使用这些协议进行连接,对于 TCP 连接,连接将失败,并将错误返回给客户端。对于 socket 连接,如果 --ssl-mode 设置为 REQUIRED,连接将失败,否则连接将被禁用 TLS/SSL。请参阅 TLSv1 和 TLSv1.1 协议支持的删除 以获取更多信息。

    • MySQL 服务器支持 TLSv1.3 协议,前提是 MySQL 服务器使用 OpenSSL 1.1.1 或更高版本编译。服务器在启动时检查 OpenSSL 的版本,如果版本低于 1.1.1,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 连接-压缩选项摘要

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 uncompressed
    Valid Values

    zlib

    zstd

    uncompressed

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

  • --zstd-compression-level=level

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

    使用 zstd 压缩的服务器连接的压缩级别。允许的级别从 1 到 22,越高的值表示越高的压缩级别。默认的 zstd 压缩级别为 3。压缩级别设置对不使用 zstd 压缩的连接无效。