MySQL中的客户端选项(一)

news2024/7/4 5:19:02

mysql是一个简单的SQL shell,具有输入行编辑功能。它支持交互式和非交互式使用。交互使用时,查询结果以ASCII表格式显示。当非交互使用时(例如,作为过滤器),结果以制表符分隔的格式显示。可以使用命令选项更改输出格式。

如果由于内存不足而导致大型结果集出现问题,请使用--quick选项。这迫使mysql一次从服务器检索一行结果,而不是检索整个结果集并在显示之前将其缓冲在内存中。这是通过使用客户机/服务器库中的mysql_use_result()C API函数而不是mysql_store_result)返回结果集来完成的。

注意:
MySQL Shell提供对X DevAPI的访问。

使用mysql非常容易。可以从命令解释器的提示中调用它,如下所示:

mysql db_name

或者:

mysql --user=user_name --password db_name

在这种情况下,您需要输入密码以响应mysql显示的提示:

Enter password: your_password

然后键入一条SQL语句,以;,\g、 或\G结尾;然后按Enter键。

键入Control+C会中断当前语句(如果有),或者取消任何部分输入行。

您可以在脚本文件(批处理文件)中执行SQL语句,如下所示:

mysql db_name < script.sql > output.tab

在Unix上,mysql客户端将交互执行的语句记录到历史文件中。

mysql支持以下选项,这些选项可以在命令行上指定,也可以在选项文件的[mysql]和[client]组中指定。

显示帮助消息并退出。

启用MySQL命令行客户端中自动重哈希(automatic rehashing)的功能。默认情况下,自动重哈希是启用的,它允许数据库、表和列名的自动补全。如果出于某些原因您想要禁用自动重哈希以加快启动速度,您可以使用--disable-auto-rehash选项。

但是,请注意,从MySQL 5.7.7开始,--disable-auto-rehash选项已经被废弃(deprecated),并且在MySQL 8.0及以后的版本中已被移除。取而代之的是,自动补全功能默认总是开启的,而无需使用任何特定的命令行选项。

如果您正在使用MySQL 8.0或更高版本,并且想要管理自动补全的行为,那么通常您不需要(也不能)通过命令行选项来禁用它。但是,您可以通过输入\#(井号)或rehash命令来手动触发名称哈希的更新,特别是在您添加了新的数据库、表或列之后。

要在命令行中补全名称,只需输入名称的前几个字符,然后按下Tab键。如果名称是唯一的,MySQL将自动补全它。如果不是唯一的,再次按下Tab键将显示以您已输入内容开头的所有可能名称。请注意,如果没有默认数据库,则不会发生补全。

自动补全(auto-completion)和命令行编辑功能(如历史记录和行编辑)通常依赖于readline库,但readline库主要是为Unix和类Unix系统(如Linux和macOS)设计的,并不直接支持Windows。

在MySQL命令行客户端中,当结果集太宽以至于无法在当前窗口宽度内水平显示时,可以使用特定的设置来使结果集以垂直格式显示。默认情况下,MySQL使用水平表格格式来显示查询结果,但如果你希望结果集在过宽时自动转换为垂直格式,你可以通过调整客户端的设置来实现。

不过,MySQL的默认命令行客户端并没有直接的命令行选项来设置这种自动切换。但是,你可以使用\G(大写G)作为查询的终止符来强制MySQL以垂直格式显示结果,即使结果集可以在水平方向上显示。

使用制表符作为列分隔符打印结果,并且每行都在新的一行上。有了这个选项,mysql就不会使用历史文件。

批处理模式会导致非特殊的输出格式和特殊字符的转义。

如果给定此选项,mysql将使用十六进制表示法(0xvalue)显示二进制数据。无论整体输出显示格式是表格格式、垂直格式、HTML还是XML,都会发生这种情况。

当使用 --binary-as-hex 选项时,MySQL 命令行客户端会将所有的二进制字符串显示为十六进制形式,包括那些由如 CHAR() 和 UNHEX() 等函数返回的二进制字符串。这个选项主要用于调试和诊断目的,以便更容易地看到二进制数据的实际内容。

以下是一个使用 ASCII 码 A(十进制为 65,十六进制为 41)的示例,来演示 --binary-as-hex 选项的效果:

  • 禁用--binary-as-hex:
mysql> SELECT CHAR(0x41), UNHEX('41');
+------------+-------------+
| CHAR(0x41) | UNHEX('41') |
+------------+-------------+
| A          | A           |
+------------+-------------+

  • 启用--binary-as-hex:

首先,你需要以包含 --binary-as-hex 选项的方式启动 MySQL 命令行客户端。但请注意,这个选项通常不能在已经运行的客户端会话中动态更改;你需要重新启动客户端并带上这个选项。

假设你以如下方式启动了客户端:

mysql --binary-as-hex -u your_username -p

然后执行相同的查询:

mysql> SELECT CHAR(0x41), UNHEX('41');
+------------------------+--------------------------+
| CHAR(0x41)             | UNHEX('41')              |
+------------------------+--------------------------+
| 0x41                   | 0x41                     |
+------------------------+--------------------------+

如果你想要在MySQL中无论是否启用了--binary-as-hex选项都将二进制数据以字符形式显示,你可以使用CHAR()函数配合USING子句来指定一个字符集。

  • CHAR() 函数在 MySQL 中有一个可选的 USING charset 子句

CHAR()函数用于将整数序列转换为字符序列。当你有一个二进制字符串(例如,一个BLOB列或BINARY类型的数据)并希望将其视为字符数据时,你可以使用CHAR()函数。而USING子句允许你指定一个字符集,这样MySQL就知道如何解释这些字节作为字符。

mysql> SELECT CHAR(0x41 USING utf8mb4);
+--------------------------+
| CHAR(0x41 USING utf8mb4) |
+--------------------------+
| A                        |
+--------------------------+
  • 更一般地,如果你想要将一个表达式转换为特定的字符集,你可以使用 MySQL 的 CONVERT() 函数。

CONVERT() 函数允许你转换数据类型和数据编码,它有两个参数:要转换的表达式和要转换到的字符集。

mysql> SELECT CONVERT(UNHEX('41') USING utf8mb4);
+------------------------------------+
| CONVERT(UNHEX('41') USING utf8mb4) |
+------------------------------------+
| A                                  |
+------------------------------------+

在 MySQL 8.0.19 及以后的版本中,当 MySQL 以交互式模式运行时,--binary-as-hex 选项默认是启用的。这意味着,默认情况下,MySQL 会将二进制数据以十六进制格式显示。

当你运行 status(或简写为 \s)命令时,如果 --binary-as-hex 选项是隐式或显式启用的,输出中将会包含与这个选项相关的行。这通常是为了向用户指示二进制数据是以十六进制格式显示的。

Binary data as: Hexadecimal

如果您想要在 MySQL 命令行客户端中禁用二进制数据以十六进制形式显示,可以使用 --skip-binary-as-hex 选项。

--binary-mode 选项在处理 mysqlbinlog 的输出时特别有用,因为 mysqlbinlog 通常用于查看或处理 MySQL 的二进制日志(binlog),这些日志可能包含 BLOB 值。

默认情况下,MySQL 在处理 SQL 语句字符串时,会将 \r\n(回车加换行)转换为 \n(换行),并将 \0(空字符)解释为语句的终止符。

在 MySQL 客户端的非交互式模式下(即当通过管道(pipe)将输入传递给 mysql 客户端或使用 source 命令加载 SQL 文件时),--binary-mode 选项会禁用除了 charset 和 delimiter 之外的所有 MySQL 命令。

这是因为非交互式模式下,mysql 客户端通常被用来处理来自文件或其他命令的预定义输入,这些输入可能包含二进制数据。在这种情况下,保持数据的原样并避免任何可能的解释或转换是非常重要的。

在具有多个网络接口的计算机上,使用此选项可以选择用于连接MySQL服务器的接口。

安装字符集的目录。

在结果中写入列名。

显示结果集元数据。此信息对应于C API MYSQL_FIELD数据结构的内容。

--comments 和 --skip-comments 用于控制发送到 MySQL 服务器的 SQL 语句中是否保留或剥离注释。默认情况下,mysql 客户端使用 --skip-comments 选项,这意味着它会剥离 SQL 语句中的注释。如果您想保留注释,可以使用 --comments 选项。

注:

  •  mysql 客户端总是将优化器提示(optimizer hints)传递给服务器,无论是否给出这些选项。
  • MySQL 客户端中剥离注释(comment stripping)的功能已被弃用,并且在未来某个 MySQL 版本中,这个特性及其相关的控制选项(如 --comments 和 --skip-comments)可能会被移除。

如果可能,压缩所有在客户端和服务器之间发送的信息。

从 MySQL 8.0.18 开始,--compress 选项在 MySQL 客户端命令行工具中已被弃用(deprecated),并可能在未来的 MySQL 版本中被移除。这是因为 MySQL 客户端现在默认使用更加高效的通信协议和加密方法,这通常不再需要显式启用压缩。

在 MySQL 中,对于连接到服务器的连接,可以指定允许的压缩算法。这些算法与 protocol_compression_algorithms 系统变量的可用算法相同。其默认值是 'uncompressed',表示不使用压缩。

此选项是在MySQL 8.0.18中添加的。

在 MySQL 中,如果用于连接的账户密码已过期,通常服务器会断开非交互式客户端的连接。但是,在某些情况下,您可能希望即使密码过期也能让非交互式客户端(如脚本或自动化工具)继续执行操作。为此,MySQL 8.0 引入了“沙箱模式”(sandbox mode)的概念,它允许客户端在密码过期的情况下继续执行操作,但仅限于只读操作。

连接超时的秒数(默认值为0)。

要使用的数据库。这主要在选项文件中很有用。

编写调试日志。一个典型的debug_options字符串是d:t:o,file_name。默认值为d:t:o,/tmp/mysql.trace。

只有使用WITH_DEBUG构建MySQL时,此选项才可用。Oracle提供的MySQL版本二进制文件不是使用此选项构建的。

当程序退出时,打印调试信息以及内存和CPU使用情况统计信息。

只有使用WITH_DEBUG构建MySQL时,此选项才可用。Oracle提供的MySQL版本二进制文件不是使用此选项构建的。

关于使用哪个客户端身份验证插件的提示。

使用charset_name作为客户端和连接的默认字符集。

如果操作系统使用一个字符集,而mysql客户端默认使用另一个,则此选项非常有用。在这种情况下,输出的格式可能不正确。通常可以通过使用此选项强制客户端使用系统字符集来解决此类问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1837183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis调用存储过程

在mysql数据库中创建一个存储过程 DELIMITER $$ CREATEPROCEDURE mybatisdemo1.pgetallusers(IN sid INT,IN eid INT)BEGINSELECT * FROM sb_users WHERE id>sid AND id<eid;END$$ DELIMITER ; 在Mapper接口里创建方法&#xff0c;和普通的查询数据方法没区别 在Mybati…

[Qt] Qt Creator 编码警告:warning:C4819

Qt项目使用VC&#xff08;2019 64bit&#xff09;编译器出现此错误。 warning&#xff1a;C4819&#xff1a;该文件包含不能在当前代码页&#xff08;936&#xff09;中表示的字符。请将该文件保存为Unicode格式以防止数据丢失。(可能这个警告内容也会在Qt Creator 中乱码) 如…

头歌资源库(10)拼数字

一、 问题描述 二、算法思想 初始化一个长度为10的数组count&#xff0c;用于记录卡片中每个数字的数量。 从1开始依次尝试拼出正整数&#xff0c;直到无法拼出下一个数为止。 对于每个尝试拼出的正整数&#xff0c;遍历其每一位的数字&#xff0c;检查该数字在count中是否还…

C#心跳机制客户端

窗体&#xff08;richTextBox右显示聊天&#xff09; 步骤 点击链接按钮 tcpclient客户端步骤 1创建客户端对象 2连接服务器connect 3创建网络基础流发消息 .write发消息 4 创建网络基础流接消息 .read接消息 5 断开连接…

【AI+多智能体框架】个人整理的几款AI多智能体框架

昨天无意间了解到 alipay开源 的多智能体框架agentUniverse &#xff0c;这里聊一下。现在这个信息社会&#xff0c;讲究多角色协同工作。人工智能时代&#xff0c;多智能体协同工作也是大势所趋&#xff0c;虽然现在框架或多或少还存在瑕疵。 但所有新技术都是在发展中逐步迭代…

04 DNS域名解析服务

1、DNS系统的作用及类型 在整个互联网大家庭中&#xff0c;大部分的网站、邮件等服务器都使用了域名形式的地址&#xff0c;如www.baidu.com、mail.163.com等。很显然这种地址形式要比使用61.233.189.147、202.108.33.74的IP地址形式更加直观&#xff0c;且更容易被用户记住。…

【学习】程序员资源网址

1 书栈网 简介&#xff1a;书栈网是程序员互联网IT开源编程书籍、资源免费阅读的网站&#xff0c;在书栈网你可以找到很多书籍、笔记资源。在这里&#xff0c;你可以根据热门收藏和阅读查看大家都在看什么&#xff0c;也可以根据技术栈分类找到对应模块的编程资源&#xff0c;…

一个按钮更改Notes字体大小

大家好&#xff0c;才是真的好。 在说到正文以前&#xff0c;我们还是提两句&#xff0c;上周HCL发布了Notes/Domino 12.0.2FP4补丁&#xff0c;以及在亚马逊云应用市场上架了HCL Domino 14.0。 现在谈谈正文部分。 随着岁月飞逝&#xff0c;使用Notes的人也开始日渐眼花&a…

[面试题]缓存

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis 什么是缓存&#xff1f;…

RFID分体式天线优势和特点介绍

RFID射频识别技术主要是利用无线电波来进行信息的传输&#xff0c;电波的产生和接收都需要通过天线来完成。当电子标签进入读写器天线工作区范围内&#xff0c;电子标签天线便产生足够的感应电流&#xff0c;从而获得能量被激活读写相关数据。对于RFID系统来说&#xff0c;天线…

经验分享:申请贷款的时候会被查大数据信用吗?

当我们考虑申请贷款时&#xff0c;往往会关注到背后的信用评估机制。这个过程中&#xff0c;大数据的使用日益成为一个关键因素。所谓大数据信用查询并不仅仅是传统的信用报告查询&#xff0c;它涵盖了更广泛的数据范围和更复杂的分析方法&#xff0c;以全面评估申请人的信用状…

以太坊 ERC20手机钱包推荐测评,一文读懂ERC20 bitget钱包

什么是以太坊 ERC20&#xff1f; 元描述&#xff1a;以太坊 ERC20 通证正在彻底改变以太坊区块链上的数字资产管理&#xff0c;尤其是在去中心化金融领域。在下文中了解更多信息。 什么是以太坊ERC20&#xff1f; 以太坊 ERC20&#xff08;web3.bitget.com/en/wiki/mother-of…

网络聚合通信测试--自动化测试脚本

一 网络聚合通信测试 以下测试用例为&#xff1a; 整集群测试&#xff0c;每节点进程数从2开始以2的幂次增加至满核心&#xff1b; 测试常见的通信聚合测试8个条目 二 测试前准备 待测节点已完成OS安装及基础配置待测节点已配置完IP&#xff08;若存在IB&#xff0c;则需要配置…

[面试题]Redis

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis 什么是 Redis &#xff…

使用Minikube部署Kubernetes环境

使用Minikube部署Kubernetes环境 1. Minikube简介 Minikube是一个轻量级的Kubernetes实现&#xff0c;它在本地运行一个Kubernetes集群&#xff0c;可以是单节点或者集群环境&#xff0c;主要用于开发和测试。Minikube支持Kubernetes的所有主要功能&#xff0c;包括Dashboard…

【Linux基础IO】常见的对文件操作的函数、文件描述符fd、访问文件的本质分析

目录 fopen函数 chdir函数 fclose函数 fwrite和fread函数 open函数 umask函数 write函数 read函数 close函数 文件描述符fd 进程访问文件的本质分析 fopen函数 参数mode&#xff1a; w方式打开文件&#xff1a;1、如果被打开文件不存在&#xff0c;系统会在使用fopen函…

DGit的使用

将Remix连接到远程Git仓库 1.指定克隆的分支和深度 2.清理&#xff0c;如果您不在工作区上工作&#xff0c;请将其删除或推送至 GitHub 或 IPFS 以确保安全。 为了进行推送和拉取&#xff0c;你需要一个 PAT — 个人访问令牌 当使用 dGIT 插件在 GitHub 上推送、拉取、访问私…

火灾数据的另一个下载源 MOD14 MODIS火灾检测和热异常数据集

地图资源工具&#xff0c;有对于同一种数据会有多个数据源&#xff0c;起火点数据除了下载全球范围内的实时和历史火灾数据矢量下载源外 还有另一个火灾数据的栅格下载源 利用地图资源工具下载&#xff0c; 下载方式基本统一&#xff0c;可以最大程度简化您数据获取的操作并节省…

CSS打印设置页眉页脚

之前写过一篇文章CSS实现自动分页打印同时每页保留重复的自定义内容&#xff0c;可以实现window.print()打印时多张页面保留相同的内容&#xff08;如header、footer&#xff09;&#xff0c;但其并不是真正意义上的页眉页脚&#xff0c;footer内容在最后一张页面未撑满时不能置…

MyBatis系列四: 动态SQL

动态SQL语句-更复杂的查询业务需求 官方文档基本介绍案例演示if标签应用实例where标签应用实例choose/when/otherwise应用实例foreach标签应用实例trim标签应用实例[使用较少]set标签应用实例[重点]课后练习 上一讲, 我们学习的是 MyBatis系列三: 原生的API与配置文件详解 现在…