MySQL中的客户端选项(二)

在全局选项文件之后读取此选项文件,但(在Unix上)在用户选项文件之前读取。如果文件不存在或无法访问,则会发生错误。如果file_name不是绝对路径名,则会相对于当前目录进行解释。

仅使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果file_name不是绝对路径名,则会相对于当前目录进行解释。

异常:即使使用--defaults文件,客户端程序也会读取.mylogin.cnf。

不仅读取常用的选项组,还读取具有常用名称和后缀str的组。例如,mysql通常读取[client]和[mysql]组。如果这个选项被指定为--defaults group后缀=_other,mysql还会读取[client_other]和[mysql_other]组。

设置语句分隔符。默认值为分号字符(;)。

--disable-named-commands

禁用命名命令。仅使用\*格式,或仅在以分号(;)结尾的行的开头使用命名命令。mysql启动时默认启用此选项。但是,即使使用此选项,长格式命令仍然可以从第一行开始工作。

在MySQL连接中,DNS SRV(Service)记录可以被用来确定连接到MySQL服务器的候选主机。SRV记录是DNS记录的一种,它提供了一种方式来指定服务的位置,包括主机名、端口号以及优先级和权重。

假设example.com域配置了以下DNS SRV记录,用于确定连接到MySQL服务器的候选主机:

Name                     TTL   Class   Priority Weight Port Target
_mysql._tcp.example.com. 86400 IN SRV  0        5      3306 host1.example.com
_mysql._tcp.example.com. 86400 IN SRV  0        10     3306 host2.example.com
_mysql._tcp.example.com. 86400 IN SRV  10       5      3306 host3.example.com
_mysql._tcp.example.com. 86400 IN SRV  20       5      3306 host4.example.com

要使用该DNS SRV记录,请如下调用mysql:

mysql --dns-srv-name=_mysql._tcp.example.com

mysql尝试连接到组中的每个服务器,直到建立成功的连接。只有当无法建立到任何服务器的连接时,才会发生连接失败。DNS SRV记录中的优先级和权重值决定了尝试服务器的顺序。

当使用--dns-srv名称调用时,mysql仅尝试建立TCP连接。

当同时指定了--dns-srv-name--host选项时,--dns-srv-name将优先使用。这意味着MySQL客户端将使用DNS SRV记录来确定要连接的服务器,而不是使用--host选项中指定的单个主机。

使用--dns-srv-name选项时,MySQL客户端将使用mysql_real_connect_dns_srv() C API函数来建立连接,而不是通常的mysql_real_connect()函数。mysql_real_connect_dns_srv()函数是专门为支持DNS SRV记录而设计的,它允许客户端根据SRV记录中的优先级和权重来解析和连接到多个服务器。

如果在运行时使用connect命令并指定了一个主机名参数,那么这个主机名将优先于在MySQL启动时通过--dns-srv-name选项指定的任何DNS SRV记录。

--dns-srv-name选项是在MySQL 8.0.22版本中引入的。因此,要使用此选项,您需要确保您的MySQL客户端库和/或命令行工具是8.0.22或更高版本。

启用mysql_clear_password明文身份验证插件。

执行该语句并退出。默认的输出格式类似于使用--batch生成的格式。

有了这个选项,mysql就不会使用历史文件。

从MySQL 8.0.35开始,此选项已被弃用,并将在未来的MySQL版本中删除。

必须执行FIDO设备注册的一个或多个因素。此选项值必须是一个值,或者是用逗号分隔的两个值。每个值必须是2或3,因此允许的选项值为“2”、“3”、“2,3”和“3,2”。

例如,一个账户需要注册第三个认证因素(通常称为“多因素认证”或“MFA”)来调用 MySQL 客户端时,如下所示:

mysql --user=user_name --fido-register-factor=3

如果一个账户需要注册第二个和第三个认证因素来连接MySQL客户端,如下所示:

mysql --user=user_name --fido-register-factor=2,3

如果注册成功,则建立连接。如果存在挂起注册的身份验证因素,则在尝试连接到服务器时,会将连接置于挂起注册模式。在这种情况下,断开连接并重新连接正确的--fido-register-factor 值以完成注册。

注册是一个两步过程,包括启动注册和完成注册步骤。启动注册步骤执行以下语句:

ALTER USER user factor INITIATE REGISTRATION

该语句返回一个,其中包含一个32字节的质询、用户名和依赖方ID(请参阅authentication_fido_rp_ID)。

完成注册步骤执行以下语句:

ALTER USER user factor FINISH REGISTRATION SET CHALLENGE_RESPONSE AS 'auth_string'

当注册流程完成时,客户端会发送一个auth_string到服务器,这个字符串通常包含以下信息:

  • Authenticator Data:包含验证器生成的公共信息的数据结构。

  • Attestation Certificate (Optional):可选的X.509格式的证书,用于证明FIDO认证器的真实性。

  • Signature:由FIDO认证器生成的签名,用于证明上述信息(特别是Authenticator Data)确实来自该设备,并且没有被篡改。

initiateregistration步骤需要在一个单一的客户端连接中完成。这是因为initiate步骤中服务器发送给客户端的挑战(challenge)信息会被保存在客户端的连接处理器中,而这个挑战信息在后续的registration步骤中是必需的。

如果在initiate步骤之后,用户尝试在一个不同的连接中执行registration步骤,那么由于新的连接中没有保存之前initiate步骤中的挑战信息,注册就会失败。

为了简化这个过程并避免这种失败情况,MySQL的客户端工提供了--fido-register-factor选项。使用这个选项,用户可以在一个单一的命令或操作中同时执行initiateregistration步骤,无需手动执行多个步骤或跨多个连接。

--fido register factor选项仅适用于mysql客户端和mysql Shell。其他MySQL客户端程序不支持它。

即使其中一个命令或查询出现错误,也能继续执行后续的操作,而不是立即终止整个进程。

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

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

该选项允许用户指定一个或多个由冒号分隔的模式,用于在日志记录时忽略特定的语句。这些模式被添加到默认的模式列表中(通常包括"IDENTIFIED:PASSWORD"),后者用于在记录历史文件或系统日志(如果启用了--syslog选项)时忽略包含敏感信息的语句。

连接到给定主机上的MySQL服务器。

如果同时给定了--dns srv name选项和--host选项,则该选项优先于它们--dns-srv-name导致连接建立使用mysql_real_connect_dns_srv()C API函数,而不是mysql_real/connect()。但是,如果随后在运行时使用connect命令并指定主机名参数,则该主机名优先于在mysql启动时指定dns srv记录的任何--dns-srv名称选项。

生成HTML输出。

忽略函数名称后面的空格。

连接到服务器后要执行的单个SQL语句。如果启用了自动重新连接,则在重新连接发生后会再次执行该语句。

为错误写入行号。使用 --skip-line-numbers禁用此功能。

此选项影响LOAD DATA 操作的客户端侧LOCAL功能。LOAD DATA LOCAL语句允许用户从客户端机器上的文件中加载数据到MySQL服务器的表中。这个选项用于指定LOAD DATA LOCAL语句中命名的文件必须位于的目录。

关于--load-data-local-dir选项的效果,它取决于是否启用了LOCAL数据加载:

  • 如果LOCAL数据加载是启用的(默认在MySQL客户端库中启用,或者通过指定--local-infile[=1]来启用),那么--load-data-local-dir选项将被忽略。这意味着客户端可以从任何目录加载文件,而不受--load-data-local-dir指定的目录限制。

  • 如果LOCAL数据加载是禁用的(默认在MySQL客户端库中禁用,或者通过指定--local-infile=0来禁用),那么--load-data-local-dir选项将生效。这意味着客户端只能从--load-data-local-dir指定的目录中加载文件。如果尝试从其他目录加载文件,操作将会失败。

--load-data-local-dir选项适用时,它的值指定了本地数据文件必须位于的目录。这个目录路径名与要加载的文件的路径名之间的比较是区分大小写的,无论底层文件系统的大小写敏感性如何。

如果--load-data-local-dir选项的值是空字符串,那么它就没有指定任何目录,结果是不允许进行任何本地数据加载。

这意味着,如果你设置了--load-data-local-dir为某个具体的目录路径(例如/path/to/data),那么任何LOAD DATA LOCAL INFILE语句中指定的文件都必须位于这个目录下,并且文件路径的大小写必须与这个目录路径的大小写完全匹配。

为了明确禁用除了位于/my/local/data目录中的文件之外的本地数据加载,你可以这样调用mysql客户端:

mysql --local-infile=0 --load-data-local-dir=/my/local/data

当同时给出--local-infile--load-data-local-dir选项时,它们给出的顺序并不重要。重要的是这两个选项是否被正确设置以及MySQL服务器是否允许本地数据加载。

MySQL 8.0.21中添加了--load data local-dir选项。

  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值