当前位置: 首页 > news >正文

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>。

相关文章:

  • 【一步一步了解Java系列】:认识异常类
  • Redis学习|Redis 是什么、Redis 能干嘛、Window安装Redis、Linux下安装Redis、Redis测试性能
  • 2023-2024山东大学移动互联网开发期末回忆
  • 6.22面试问题【1】长链表排序选择归并还是快排
  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-14模型构造
  • 在C#中对 JSON进行序列化和反序列化处理
  • 物联网协议应用
  • 【GO-OpenCV】go-cv快速配置
  • Spring的自动注入(也称为自动装配)
  • 分享excel全套教程速成,高效人士的Excel必修课,附视频课程!
  • 基于SpringBoot+Vue在线考试报名系统设计和实现(源码+LW+调试文档+讲解等)
  • 【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——下
  • 使用 DISPATCHERS 进行 Blueprint 之间的通信
  • Python二级考试试题
  • Python高效内存访问,memoryview这个神器你值得拥有!
  • 《Java编程思想》读书笔记-对象导论
  • co模块的前端实现
  •  D - 粉碎叛乱F - 其他起义
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • IDEA常用插件整理
  • Javascript设计模式学习之Observer(观察者)模式
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • leetcode386. Lexicographical Numbers
  • Python_网络编程
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 树莓派 - 使用须知
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (ZT)出版业改革:该死的死,该生的生
  • (八)Flask之app.route装饰器函数的参数
  • (七)Activiti-modeler中文支持
  • (三)docker:Dockerfile构建容器运行jar包
  • (四)JPA - JQPL 实现增删改查
  • (转)程序员疫苗:代码注入
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .htaccess 强制https 单独排除某个目录
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .NET中使用Redis (二)
  • /proc/vmstat 详解
  • @antv/x6 利用interacting方法来设置禁止结点移动的方法实现。
  • @EventListener注解使用说明
  • @requestBody写与不写的情况
  • @Resource和@Autowired的区别
  • @vue/cli 3.x+引入jQuery
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [120_移动开发Android]008_android开发之Pull操作xml文件