在全局选项文件之后读取此选项文件,但(在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
)确实来自该设备,并且没有被篡改。
initiate
和registration
步骤需要在一个单一的客户端连接中完成。这是因为initiate
步骤中服务器发送给客户端的挑战(challenge)信息会被保存在客户端的连接处理器中,而这个挑战信息在后续的registration
步骤中是必需的。
如果在initiate
步骤之后,用户尝试在一个不同的连接中执行registration
步骤,那么由于新的连接中没有保存之前initiate
步骤中的挑战信息,注册就会失败。
为了简化这个过程并避免这种失败情况,MySQL的客户端工提供了--fido-register-factor
选项。使用这个选项,用户可以在一个单一的命令或操作中同时执行initiate
和registration
步骤,无需手动执行多个步骤或跨多个连接。
--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选项。