本节描述大多数MySQL客户端程序支持的选项,这些选项控制客户端程序如何建立与服务器的连接,是否加密连接以及是否压缩连接。这些选项可以在命令行或选项文件中给出。
建立连接的命令选项
本节介绍控制客户端程序如何建立与服务器的连接的选项。有关其他信息和显示如何使用它们的示例,请参见 第4.2.4节“使用命令选项连接到MySQL服务器”。
表4.3连接建立选项摘要
| 选项名称 | 描述 |
|---|---|
| –default-auth | 身份验证插件使用 |
| - host | MySQL服务器所在的主机 |
| - password | 连接服务器时使用的密码 |
| - pipe | 使用命名管道连接到服务器(仅Windows) |
| –plugin-dir | 安装插件的目录 |
| - port | 用于连接的TCP / IP端口号 |
| - protocol | 使用的传输协议 |
| –shared-memory-base-name | 共享内存连接的共享内存名称(仅Windows) |
| -socket | Unix套接字文件或Windows命名管道使用 |
| -user | 连接服务器时使用的MySQL用户名 |
-
有关使用哪个客户端身份验证插件的提示。请参见第6.2.17节“可插入身份验证”。
-
--host=*host_name*,-h *host_name*运行MySQL服务器的主机。该值可以是主机名,IPv4地址或IPv6地址。默认值为
localhost。 -
--password[=*pass_val*\],-p[*pass_val*]用于连接服务器的MySQL帐户的密码。密码值是可选的。如果未给出,程序将提示您输入一个。如果给出,则或 后面的密码之间 必须 没有空格。如果未指定密码选项,则默认为不发送密码。
--password=-p在命令行上指定密码应该被认为是不安全的。为避免在命令行上输入密码,请使用选项文件。请参见 第6.1.2.1节“最终用户密码安全准则”。
要明确指定没有密码,并且客户端程序不应提示输入密码,请使用该
--skip-password选项。 -
--pipe,-W在Windows上,使用命名管道连接到服务器。仅当服务器在
named_pipe启用系统变量以支持命名管道连接的情况下启动时,此选项才适用 。另外,建立连接的用户必须是named_pipe_full_access_group系统变量指定的Windows组的成员 。 -
在其中查找插件的目录。如果该
--default-auth选项用于指定身份验证插件,但客户端程序找不到它,请指定此选项。请参见 第6.2.17节“可插入身份验证”。 -
--port=*port_num*,-P *port_num*对于TCP / IP连接,使用的端口号。默认端口号是3306。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}此选项显式指定用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时,此功能很有用。例如,
localhost默认情况下,使用Unix套接字文件在Unix上进行连接:mysql --host=localhost要强制使用TCP / IP传输,请指定一个
--protocol选项:mysql --host=localhost --protocol=TCP下表显示了允许的
--protocol选项值,并指出了每个值的适用平台。这些值不区分大小写。--protocol值使用的传输协议 适用平台 TCPTCP / IP传输到本地或远程服务器 所有 SOCKETUnix套接字文件传输到本地服务器 Unix和类Unix系统 PIPE命名管道传输到本地服务器 视窗 MEMORY共享内存传输到本地服务器 视窗 另请参见第4.2.7节“连接传输协议”
-
--shared-memory-base-name=*name*在Windows上,共享内存名称,用于使用共享内存与本地服务器建立的连接。默认值为
MYSQL。共享内存名称区分大小写。仅当服务器在
shared_memory启用系统变量以支持共享内存连接的情况下启动时,此选项才适用 。 -
--socket=*path*,-S *path*在Unix上,Unix套接字文件的名称,该文件用于通过命名管道与本地服务器建立的连接。Unix套接字文件的默认名称为
/tmp/mysql.sock。在Windows上,用于连接到本地服务器的命名管道的名称。Windows的默认管道名称为
MySQL。管道名称不区分大小写。在Windows上,仅当在
named_pipe启用了支持命名管道连接的系统变量的情况下启动服务器时,此选项才适用。另外,建立连接的用户必须是named_pipe_full_access_group系统变量指定的Windows组的成员 。 -
--user=*user_name*,-u *user_name*用于连接到服务器的MySQL帐户的用户名。默认用户名
ODBC在Windows上,或者您的Unix登录名在Unix上。
加密连接的命令选项
本节介绍了客户端程序的选项,这些选项指定是否使用到服务器的加密连接,证书和密钥文件的名称以及与加密连接支持有关的其他参数。有关建议使用的示例以及如何检查连接是否已加密的示例,请参见 第6.3.1节“配置MySQL以使用加密的连接”。
注意
这些选项仅对使用经过加密的传输协议的连接有效。即TCP / IP和Unix套接字文件连接。请参见 第4.2.7节“连接传输协议”
有关使用MySQL C API中的加密连接的信息,请参阅C API对加密连接的支持。
表4.4连接加密选项摘要
| 选项名称 | 描述 | 介绍了 |
|---|---|---|
| –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-model | 与服务器连接的所需安全状态 | |
| –tls-ciphersuites | 允许的TLSv1.3密码套件用于加密连接 | 8.0.16 |
| –tls-version | 允许的TLS协议进行加密连接 |
-
从服务器请求基于RSA密钥对的密码交换所需的公共密钥。此选项适用于使用
caching_sha2_password身份验证插件进行身份验证的客户端 。对于该插件,除非请求,否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户,将忽略此选项。如果未使用基于RSA的密码交换,也将被忽略,例如客户端使用安全连接连接到服务器时。如果 给出并指定了有效的公共密钥文件,则优先于 。
--server-public-key-path=*file_name*--get-server-public-key有关
caching_sha2_password插件的信息 ,请参见 第6.4.1.2节“缓存SHA-2可插拔身份验证”。 -
--server-public-key-path=*file_name*PEM格式的文件的路径名,其中包含服务器用于基于RSA密钥对的密码交换所需的公用密钥的客户端副本。此选项适用于使用
sha256_password或caching_sha2_password身份验证插件进行身份验证的客户端 。对于未通过这些插件之一进行身份验证的帐户,将忽略此选项。如果未使用基于RSA的密码交换,也将被忽略,例如客户端使用安全连接连接到服务器时。如果 给出并指定了有效的公共密钥文件,则优先于 。
--server-public-key-path=*file_name*--get-server-public-key仅当使用OpenSSL构建MySQL时,此选项才可用。
有关
sha256_password和caching_sha2_password插件的信息,请参见 第6.4.1.3节“ SHA-256可插拔身份验证”和 第6.4.1.2节“缓存SHA-2可插拔身份验证”。 -
证书颁发机构(CA)证书文件的路径名(PEM格式)。该文件包含受信任的SSL证书颁发机构列表。
要告诉客户端在建立与服务器的加密连接时不对服务器证书进行身份验证,请既不指定
--ssl-ca也不 指定--ssl-capath。服务器仍然根据为客户帐户建立的任何适用要求验证客户,并且仍使用服务器端指定的任何ssl_ca或ssl_capath系统变量值。要为服务器指定CA文件,请设置
ssl_ca系统变量。 -
包含PEM格式的受信任SSL证书颁发机构(CA)证书文件的目录的路径名。
要告诉客户端在建立与服务器的加密连接时不对服务器证书进行身份验证,请既不指定
--ssl-ca也不 指定--ssl-capath。服务器仍然根据为客户帐户建立的任何适用要求验证客户,并且仍使用服务器端指定的任何ssl_ca或ssl_capath系统变量值。要指定服务器的CA目录,请设置
ssl_capath系统变量。 -
客户端SSL公钥证书文件的路径名,PEM格式。
要指定服务器SSL公钥证书文件,请设置
ssl_cert系统变量。 -
直到TLSv1.2为止使用TLS协议的连接的允许加密密码的列表。如果列表中不支持密码,则使用这些TLS协议的加密连接将不起作用。
为了获得最大的可移植性, *
cipher_list*应列出一个或多个密码名称,并用冒号分隔。例子:--ssl-cipher=AES128-SHA --ssl-cipher=DHE-RSA-AES128-GCM-SHA256:AES128-SHAOpenSSL支持在https://www.openssl.org/docs/manmaster/man1/ciphers.html的OpenSSL文档中描述的用于指定密码的语法 。
有关MySQL支持的加密密码的信息,请参见 第6.3.2节“加密的连接TLS协议和密码”。
要指定服务器的加密密码,请设置
ssl_cipher系统变量。 -
包含PEM格式的证书吊销列表的文件的路径名。
如果既未给出也
--ssl-crl未--ssl-crlpath给出,则即使CA路径包含证书吊销列表,也不会执行CRL检查。要为服务器指定吊销列表文件,请设置
ssl_crl系统变量。 -
包含PEM格式的证书吊销列表文件的目录的路径名。
如果既未给出也
--ssl-crl未--ssl-crlpath给出,则即使CA路径包含证书吊销列表,也不会执行CRL检查。要指定服务器的吊销列表目录,请设置
ssl_crlpath系统变量。 -
--ssl-fips-mode={OFF|ON|STRICT}控制是否在客户端上启用FIPS模式。该
--ssl-fips-mode选项与其他选项的不同之处在于,该 选项 不用于建立加密连接,而是影响允许的加密操作。请参见第6.8节“ FIPS支持”。--ssl-*xxx*这些
--ssl-fips-mode值是允许的:OFF:禁用FIPS模式。ON:启用FIPS模式。STRICT:启用“严格” FIPS模式。
注意
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode是OFF。在这种情况下,设置--ssl-fips-mode为ON或STRICT导致客户端在启动时发出警告并以非FIPS模式运行。要为服务器指定FIPS模式,请设置
ssl_fips_mode系统变量。 -
客户端SSL私钥文件的路径名,采用PEM格式。为了提高安全性,请使用RSA密钥大小至少为2048位的证书。
如果密钥文件受密码保护,则客户端程序会提示用户输入密码。密码必须以交互方式提供;它不能存储在文件中。如果密码不正确,程序将继续运行,好像无法读取密钥。
要指定服务器SSL私钥文件,请设置
ssl_key系统变量。 -
此选项指定与服务器的连接的所需安全状态。按照严格性从高到低的顺序,这些模式值是允许的:
-
DISABLED:建立未加密的连接。 -
PREFERRED:如果服务器支持加密连接,则建立加密连接;如果无法建立加密连接,则退回到未加密连接。如果--ssl-mode未指定,则为默认值。Unix套接字文件上的连接未使用方式加密
PREFERRED。要对Unix套接字文件连接强制执行加密,请使用REQUIRED或更严格的模式。(但是,默认情况下,套接字文件传输是安全的,因此加密套接字文件连接将使其不再安全并增加CPU负载。) -
REQUIRED:如果服务器支持加密连接,则建立加密连接。如果无法建立加密连接,则连接尝试将失败。 -
VERIFY_CA:与相似REQUIRED,但还要对照配置的CA证书验证服务器证书颁发机构(CA)证书。如果找不到有效的匹配CA证书,则连接尝试将失败。 -
VERIFY_IDENTITY:与相似VERIFY_CA,但另外通过对照服务器发送给客户端的证书中的身份检查客户端用于连接服务器的主机名来执行主机名身份验证:- 从MySQL 8.0.12开始,如果客户端使用OpenSSL 1.0.2或更高版本,则客户端将检查其用于连接的主机名是否与服务器证书中的“使用者备用名称”值或“通用名称”值匹配。
- 否则,客户端将检查其用于连接的主机名是否与服务器证书中的“公用名”值匹配。
如果不匹配,连接将失败。对于加密连接,此选项有助于防止中间人攻击。
注意
带有的主机名身份验证
VERIFY_IDENTITY不适用于由服务器自动创建或使用mysql_ssl_rsa_setup手动创建的自签名证书 (请参见 第6.3.3.1节“使用MySQL创建SSL和RSA证书和密钥”)。此类自签名证书不包含服务器名称作为“通用名称”值。主机名身份验证也不适用于使用通配符指定“公用名”的证书,因为该名将与服务器名进行逐字比较。
该
--ssl-mode选项与CA证书选项进行交互,如下所示:- 如果
--ssl-mode没有明确设置,否则,使用--ssl-ca或--ssl-capath暗示--ssl-mode=VERIFY_CA。 - 对于
--ssl-mode的值VERIFY_CA或VERIFY_IDENTITY,--ssl-ca或--ssl-capath还需要,以提供匹配由服务器使用的一个CA证书。 --ssl-mode带有VERIFY_CA或 以外的值 的显式选项与VERIFY_IDENTITY显式--ssl-ca或--ssl-capath选项一起会产生警告,即使指定了CA证书选项,也不会执行服务器证书的验证。
要要求MySQL帐户使用加密连接,请使用
CREATE USER带有REQUIRE SSL子句的帐户来创建帐户,或者使用ALTER USER现有帐户添加REQUIRE SSL子句。除非MySQL支持加密连接并且可以建立加密连接,否则使用该帐户的客户端的连接尝试将被拒绝。该
REQUIRE子句允许使用其他与加密相关的选项,这些选项可用于实施比严格的安全要求REQUIRE SSL。有关使用使用各种REQUIRE选项配置的帐户进行连接的客户端可能指定或必须指定哪些命令选项的更多详细信息 ,请参阅“ 创建用户SSL / TLS选项”。 -
-
--tls-ciphersuites=*ciphersuite_list*此选项指定客户端允许使用TLSv1.3的加密连接的密码体系。该值是零个或多个冒号分隔的密码套件名称的列表。例如:
mysql --tls-ciphersuites="suite1:suite2:suite3"可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。如果未设置此选项,则客户端允许使用默认的密码套件集。如果该选项设置为空字符串,则不会启用任何密码套件,并且无法建立加密连接。有关更多信息,请参见 第6.3.2节“加密的连接TLS协议和密码”。
该选项是在MySQL 8.0.16中添加的。
要指定服务器允许的密码套件,请设置
tls_ciphersuites系统变量。 -
此选项指定客户端允许进行加密连接的TLS协议。该值是一个或多个逗号分隔的协议版本的列表。例如:
mysql --tls-version="TLSv1.1,TLSv1.2"可以为此选项命名的协议取决于用于编译MySQL的SSL库。应该选择允许的协议,以免 在列表中留下“漏洞”。例如,这些值没有孔:
--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"这些值确实有孔,不应使用:
--tls-version="TLSv1,TLSv1.2" --tls-version="TLSv1.1,TLSv1.3"有关详细信息,请参见 第6.3.2节“加密的连接TLS协议和密码”。
要指定服务器允许的TLS协议,请设置
tls_version系统变量。
连接压缩的命令选项
本节介绍使客户端程序能够控制对服务器连接的压缩使用的选项。有关显示更多信息的示例,请参见 第4.2.8节“连接压缩控制”。
表4.5连接压缩选项摘要
| 选项名称 | 描述 | 介绍了 | 不推荐使用 |
|---|---|---|---|
| - 压缩 | 压缩客户端和服务器之间发送的所有信息 | 8.0.18 | |
| -压缩算法 | 用于服务器连接的允许压缩算法 | 8.0.18 | |
| –zstd-压缩级别 | 与使用zstd压缩的服务器的连接的压缩级别 | 8.0.18 |
-
--compress,-C尽可能压缩客户端和服务器之间发送的所有信息。
从MySQL 8.0.18开始,此选项已被弃用。希望在将来的MySQL版本中将其删除。请参阅 配置旧版连接压缩。
-
--compression-algorithms=*value*用于连接到服务器的允许的压缩算法。可用算法与
protocol_compression_algorithms系统变量相同 。默认值为uncompressed。该选项是在MySQL 8.0.18中添加的。
-
--zstd-compression-level=*level*用于与使用
zstd压缩算法的服务器的连接的压缩级别。允许的级别为1到22,更大的值表示压缩级别增加。默认zstd压缩级别为3。压缩级别设置对不使用zstd压缩的连接无效。该选项是在MySQL 8.0.18中添加的。




