MySQL中的客户端选项(三)

默认情况下,LOAD DATA的LOCAL功能是否可用取决于MySQL客户端库在编译时是否启用了该功能。

  • 当只给出--local-infile(不带值)时,它启用LOCAL数据加载。
  • 当给出--local-infile=0时,它禁用LOCAL数据加载。
  • 当给出--local-infile=1时,它启用LOCAL数据加载(这与只给出--local-infile效果相同)。

如果LOCAL功能被禁用了(无论是通过默认设置还是通过--local-infile=0),但您仍然想从特定目录加载文件,可以使用--load-data-local-dir选项。这个选项允许您指定一个目录,只有这个目录中的文件才能被LOAD DATA LOCAL INFILE语句加载。

除了客户端设置外,LOAD DATA LOCAL INFILE的成功使用还要求MySQL服务器也允许本地数据加载。这通常在服务器的配置文件(如my.cnfmy.ini)的[mysqld]部分中设置,确保local-infile被设置为1

.mylogin.cnf 是一个用于存储 MySQL 登录路径(login paths)的配置文件。登录路径是一个选项组(option group),它包含用于指定连接到哪个 MySQL 服务器以及使用哪个账户进行身份验证的选项。

要创建或修改登录路径文件,请使用MySQL_config_editor实用程序。

用于客户端/服务器通信的缓冲区的最大值。默认值为16MB,最大值为1GB。

当使用--safe-updates选项时,该选项是为了防止你执行可能产生大量数据的操作,特别是那些没有WHERE子句或限制条件的DELETEUPDATE语句(默认值为1000000)。

启用命名的mysql命令。允许使用长格式命令,而不仅仅是短格式命令。例如,quit和\q都可以识别。使用skip-named-commands--​​​​skip-named-commands命名命令可以禁用命名命令。

TCP/IP和套接字通信的缓冲区大小(默认值为16KB。)

用于TCP/IP连接的网络命名空间。如果省略,连接将使用默认(全局)命名空间。

此选项是在MySQL 8.0.22中添加的。它仅在实现网络命名空间支持的平台上可用。

这与--skip auto-rehash具有相同的效果。

在发生错误时不发出蜂鸣声(beep sound)。

用于告诉工具不要读取任何默认选项文件。这通常包括在启动过程中会被考虑的默认配置文件,如 my.cnf(在Unix/Linux系统中)或 my.ini(在Windows系统中)。

如果程序启动失败是因为从某个选项文件中读取了未知选项,那么使用 --no-defaults 选项可以阻止程序读取这些默认选项文件。

例外情况是.mylogin.cnf文件在任何情况下都会被读取(如果存在的话)。这允许以比在命令行上更安全的方式指定密码,即使不使用默认值。要创建.mylogin.cnf,请使用mysql_config_editor实用程序。

忽略除了在默认数据库与命令行上指定的数据库相同时执行的语句之外的所有语句

基于 USE 语句来过滤 SQL 语句的方法是非常基础的,并且应该谨慎使用。

当使用 mysql -u username -p db_name 命令连接到 MySQL 并指定了一个数据库 db_name 时,MySQL 会首先执行一个隐式的 USE db_name; 语句,将当前数据库上下文设置为 db_name

之后,当 MySQL 读取并处理您的 SQL 输入时,如果遇到 USE 语句,它会检查该语句指定的数据库名是否与命令行上指定的数据库名相同。如果相同,MySQL 会接受并尝试执行 USE 语句之后的 SQL 语句(这些语句将在新的数据库上下文中执行)。如果不同,MySQL 会忽略 USE 语句之后的 SQL 语句,直到遇到下一个 USE 语句或输入的结束。

重要的是要注意,MySQL 在决定是否接受或拒绝 USE 语句之后的 SQL 语句时,并不考虑这些 SQL 语句的具体内容。它只关心 USE 语句指定的数据库名是否与命令行上指定的数据库名相匹配。

假设调用mysql来处理这组语句:

DELETE FROM db2.t2;
USE db2;
DROP TABLE db1.t1;
CREATE TABLE db1.t1 (i INT);
USE db1;
INSERT INTO t1 (i) VALUES(1);
CREATE TABLE db2.t1 (j INT);

如果命令行是mysql --force --one-database db1 ,以下是 MySQL 如何处理输入 SQL 语句的:

  • DELETE 语句:即使 DELETE 语句中引用的表位于不同的数据库,但因为命令行上指定了 db1 并且这是当前默认数据库,所以 DELETE 语句会在 db1 数据库中执行(假设表名在 db1 中是唯一的,或者它确实引用了 db1 中的表)。

  • DROP TABLE 和 CREATE TABLE 语句:如果这两个语句位于一个 USE db2; 语句之后(其中 db2 不是 db1),那么这些语句将尝试在 db2 数据库中执行,而不是 db1

  • INSERT 和 CREATE TABLE 语句:如果当前默认数据库是 db1(由于命令行选项),那么这些语句将在 db1 数据库中执行。即使 CREATE TABLE 语句尝试在不同于 db1 的数据库中创建表行。

使用给定的命令对查询输出进行分页。如果省略该命令,则默认pager为PAGER 环境变量的值。有效的pager有less、more、cat[>filename]等。此选项仅适用于Unix,并且仅适用于交互式模式。

使用 --skip-pager命令可以禁用分页。

用于连接到服务器的MySQL帐户的密码。密码值是可选的。如果没有给出,mysql会提示输入一个。如果给出,则--password=或-p与其后面的密码之间不得有空格。如果未指定密码选项,则默认情况下不发送密码。

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

要明确指定不用密码,并且不需要mysql提示输入密码,请使用--skip-password选项。

--password1[=pass_val]

MySQL账户连接服务器时使用的多因素认证(multifactor authentication)的第一个因素的密码。这个密码值是可选的。如果没有给出,mysql会提示输入一个。如果给定,--password1=和它后面的密码之间不能有空格。如果没有指定密码选项,默认情况下不发送密码。

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

要明确指出不用密码并且不需要mysql提示输入密码,请使用--skip-password1选项。

--password1和-password是同义词,--skip-password1与--skip-password也是同义词。

--password2[=pass_val]

MySQL账户连接服务器时使用的多因素认证(multifactor authentication)的第二个因素的密码

此选项类似于--password1。

--password3[=pass_val]

MySQL账户连接服务器时使用的多因素认证(multifactor authentication)的第三个因素的密码

此选项类似于--password1。

在Windows上,您可以使用命名管道(named pipe)连接到MySQL服务器。但是,这个选项仅当MySQL服务器启动时启用了named_pipe系统变量以支持命名管道连接时才适用。此外,进行连接的用户必须是named_pipe_full_access_group系统变量指定的Windows组的成员。

在Windows上,authentication_kerberos_client认证插件支持一个插件选项,它允许客户端用户在运行时设置两个可能的值:SSPIGSSAPI

这个客户端插件选项的默认值是SSPI(Security Support Provider Interface),它能够从Windows的内存缓存中获取凭据。这是Windows平台上Kerberos认证的一种常见方式。

另一方面,客户端用户也可以选择通过Windows上的MIT Kerberos库支持GSSAPI(Generic Security Service Application Program Interface)模式。GSSAPI能够获取之前使用kinit命令生成的缓存凭据。这对于那些需要与其他支持GSSAPI的系统(如Linux或UNIX系统)进行互操作的Windows环境可能是有用的。GSSAPI能够获取之前通过kinit命令生成的缓存凭据。

当使用 --default-auth 选项来指定一个认证插件,但 MySQL 客户端无法找到该插件时,您可能需要指定一个目录来让 MySQL 客户端在该目录中查找插件。这可以通过 --plugin-dir 选项来实现。

对于TCP/IP连接,要使用的端口号。

打印程序名称及其从选项文件中获得的所有选项。

将提示设置为指定的格式。默认为mysql>。

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值