MySQL程序之:连接到服务器的命令选项

ops/2025/1/17 23:50:37/

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

连接建立的命令选项

本节介绍控制客户端程序如何建立与服务器的连接的选项。

表6.4连接建立选项摘要

选项名称描述
--default-authAuthentication plugin to use
--hostHost on which MySQL server is located
--passwordPassword to use when connecting to server
--password1First multifactor authentication password to use when connecting to server
--password2Second multifactor authentication password to use when connecting to server
--password3Third multifactor authentication password to use when connecting to server
--pipeConnect to server using named pipe (Windows only)
--plugin-dirDirectory where plugins are installed
--portTCP/IP port number for connection
--protocolTransport protocol to use
--shared-memory-base-nameShared-memory name for shared-memory connections (Windows only)
--socketUnix socket file or Windows named pipe to use
--userMySQL user name to use when connecting to server

--default-auth=plugin

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

--host=host_name, -h host_name

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

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

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

命令行格式--password[=password]
键入字符串
默认值[none]

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

在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码,请使用选项文件。

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

 --password1[=pass_val]

命令行格式--password1[=password]
键入字符串

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

在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码,请使用选项文件。

要显式指定没有密码并且客户端程序不应提示输入密码,请使用--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选项用于指定鉴权插件,但客户端程序找不到它,请指定此选项。 

--port=port_num, -P port_num

命令行格式--port=port_num
类型数字
默认值3306
  • 对于TCP/IP连接,要使用的端口号。默认端口号为3306。

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

命令行格式--protocol=type
类型String
默认值[see text]
有效值

TCP

SOCKET

PIPE

MEMORY

此选项明确指定用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时,它很有用。例如,在Unix上与localhost的连接使用Unix套接字文件默认:

mysql --host=localhost

 要强制使用TCP/IP传输,请指定--Protocol选项:

mysql --host=localhost --protocol=TCP

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

--protocol值传输协议使用的适用平台
TCPTCP/IP传输到本地或远程服务器所有
SOCKETUnix套接字文件传输到本地服务器Unix和类Unix系统
PIPE命名管道传输到本地服务器Windows
MEMORY共享内存传输到本地服务器Windows

--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登录名。

加密连接的命令选项

本节介绍客户端程序的选项,这些选项指定是否使用到服务器的加密连接、证书和密钥文件的名称以及与encrypted-connection支持相关的其他参数。

注:这些选项仅对使用受加密的传输协议的连接有效;即TCP/IP和Unix套接字文件连接。

表6.5加密连接选项摘要

选项名称描述
--get-server-public-keyRequest RSA public key from server
--server-public-key-pathPath name to file containing RSA public key
--ssl-caFile that contains list of trusted SSL Certificate Authorities
--ssl-capathDirectory that contains trusted SSL Certificate Authority certificate files
--ssl-certFile that contains X.509 certificate
--ssl-cipherPermissible ciphers for connection encryption
--ssl-crlFile that contains certificate revocation lists
--ssl-crlpathDirectory that contains certificate revocation-list files
--ssl-fips-modeWhether to enable FIPS mode on client side
--ssl-keyFile that contains X.509 key
--ssl-modeDesired security state of connection to server
--ssl-session-dataFile that contains SSL session data
--ssl-session-data-continue-on-failed-reuseWhether to establish connections if session reuse fails
--tls-ciphersuitesPermissible TLSv1.3 ciphersuites for encrypted connections
--tls-versionPermissible TLS protocols for encrypted connections

--get-server-public-key

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

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

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

--server-public-key-path=file_name

命令行格式--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时可用。

--ssl-ca=file_name

命令行格式--ssl-ca=file_name
类型file name

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

要告诉客户端在与服务器建立加密连接时不要验证服务器证书,请既不指定--ssl-ca也不指定--ssl-capath。服务器仍然根据为客户端帐户建立的任何适用要求验证客户端,并且仍然使用服务器端指定的任何ssl_ca或ssl_capath系统变量值。

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

--ssl-capath=dir_name

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

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

要告诉客户端在与服务器建立加密连接时不要验证服务器证书,请既不指定--ssl-ca也不指定--ssl-capath。服务器仍然根据为客户端帐户建立的任何适用要求验证客户端,并且仍然使用服务器端指定的任何ssl_ca或ssl_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
TypeString

使用TLSv1.2的连接的允许加密密码列表。如果列表中不支持密码,则使用这些TLS协议的加密连接将不起作用。

为了最大的可移植性,cipher_list应该是一个或多个密码名称的列表,由冒号分隔。例子:

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

 OpenSSL支持https://www.openssl.org/docs/manmaster/man1/ciphers.html的OpenSSL留档中描述的指定密码的语法。

要为服务器指定加密密码,请设置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}
已弃用Yes
类型枚举
默认值OFF
有效值

OFF

ON

STRICT

控制是否在客户端启用FIPS模式。--ssl-fips-mode选项与其他--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-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,但通过检查客户端用于连接到服务器的主机名与服务器发送给客户端的证书中的身份来执行主机名身份校验:如果客户端使用OpenSSL1.0.2或更高版本,客户端将检查用于连接的主机名是否与服务器证书中的主题备用名称值或通用名称值匹配。主机名身份校验也适用于使用通配符指定通用名称的证书。否则,客户端会检查它用于连接的主机名是否与服务器证书中的Common Name值匹配。

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

VERIFY_IDENTITY的主机名身份校验不适用于服务器自动创建的自签名证书。此类自签名证书不包含服务器名称作为Common Name值。

重要:默认设置--ssl-mode=PREFERRED在其他默认设置不变的情况下生成加密连接。但是,为了帮助防止复杂的中间人攻击,客户端验证服务器的身份非常重要。设置--ssl-mode=VERIFY_CA和--ssl-mode=VERIFY_IDENTITY是比默认设置更好的选择,有助于防止此类攻击。要实现其中一个设置,您必须首先确保服务器的CA证书可靠地全员可用,否则将导致可用性问题。因此,它们不是默认设置。

--ssl-mode选项与CA证书选项交互如下:

1、如果没有显式设置--ssl-mode,则使用--ssl-ca或--ssl-capath意味着--ssl-mode=VERIFY_CA。

2、对于VERIFY_CA或VERIFY_IDENTITY的--ssl-mode值,还需要--ssl-ca或--ssl-capath,以提供与服务器使用的CA证书匹配的CA证书。

3、具有VERIFY_CA或VERIFY_IDENTITY以外的值的显式--ssl-mode选项以及显式--ssl-ca或--ssl-capath选项会产生警告,指出尽管指定了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 sion-data选项调起MySQL客户端程序时,客户端会尝试从文件中反序列化会话数据(如果提供),然后使用它来建立新连接。如果您提供了文件,但会话没有被重用,则连接会失败,除非您在调用客户端程序时还在命令行中指定了--ssl-session-data-continue-on-failed-reuse选项。

mysql命令ssl_session_data_print生成会话数据文件。

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
类型字符串
默认值empty string

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

mysql --tls-ciphersuites="suite1:suite2:suite3"
可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。如果未设置此选项,则客户端允许默认密码套件集。如果该选项设置为空字符串,则不启用密码套件,并且无法建立加密连接。

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

--tls-version=protocol_list

命令行格式--tls-version=protocol_list
类型String
默认值

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

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

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

应选择允许的协议,例如不要在列表中留下“漏洞”。例如,这些值没有漏洞:

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

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

连接压缩的命令选项

本节介绍了使客户端程序能够控制对与服务器的连接使用压缩的选项。

表6.6连接压缩选项摘要

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

--compress, -C 

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

如果可能,压缩客户端和服务器之间发送的所有信息。此选项已弃用。预计它将在MySQL的未来版本中被删除。

--compression-algorithms=value

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

zlib

zstd

uncompressed

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

--zstd-compression-level=level

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

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


http://www.ppmy.cn/ops/150951.html

相关文章

【25考研】西南交通大学计算机复试重点及经验分享!

一、复试内容 上机考试:考试题型为编程上机考试,使用 C 语言,考试时长包括 15 分钟模拟考试和 120 分钟正式考试,考试内容涵盖顺序结构、选择结构、循环结构、数组、指针、字符串处理、函数、递归、结构体、动态存储、链表等知识点…

算法与数据结构——复杂度

目录 一 数据结构前言 1 数据结构 2 算法 3 算法与数据结构的关系 二 算法效率 1 算法效率: 2 复杂度 2.1 概念: 2.2分类: 2.3 空间复杂度在计算机高速发展的现代重要吗? 3 复杂度的重要性 三 时间复杂度…

【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用

提升数据质量:质量评估与改进策略 引言:数据质量的概念 在大数据时代,数据的质量直接影响到数据分析的准确性和可靠性。数据质量是指数据在多大程度上能够满足其预定用途,确保数据的准确性、完整性、一致性和及时性是数据质量的…

python实现批量视频提取音频

1、安装依赖库 首先需要安装依赖库moviepy pip install moviepy 2、找到对应目录 利用listdir列出目标文件夹以下文件,利用os.path.join进行路径拼接,os.path.splitext()[0]扣掉。MP4后缀,加入所需形式,(这里用的是…

使用Dify创建个问卷调查的工作流

为啥要使用Dify创建工作流呢?一个基于流程的智能体的实现,特别是基于业务的实现,使用Dify去实现时,通常都是一个对话工作流,当设计到相对复杂一些的流程时,如果将所有逻辑都放在对话工作流中去实现&#xf…

STM32 FreeRTOS移植

目录 FreeRTOS源码结构介绍 获取源码 1、 官网下载 2、 Github下载 源码结构介绍 源码整体结构 FreeRTOS文件夹结构 Source文件夹结构如下 portable文件夹结构 RVDS文件夹 MemMang文件夹 FreeRTOS在基于寄存器项目中移植步骤 目录添加源码文件 工程添加源码文件 …

B3DM转换成XYZ

3D模型在线转换(https://3dconvert.nsdt.cloud/)是一个可以进行3D模型格式转换的在线工具,支持多种3D模型格式进行在线预览和互相转换。 B3DM与XYZ格式简介 B3DM(Binary 3D Model)是一种用于存储三维模型的二进制格式…

【Linux】进程间通信IPC

目录 进程间通信 IPC 1. 进程间通信方式 2. 无名管道 2.1 特点 2.2 函数接口 2.3 注意事项 3. 有名管道 3.1 特点 3.2 函数接口 3.3 注意事项 3.4 有名管道和无名管道的区别 4. 信号 4.1概念 4.2信号的响应方式 4.3 信号种类 4.4 函数接口 4.4.1 信号发送和挂…