MySQL中的客户端选项(四)

用于连接到服务器的传输协议。当其他连接参数通常导致使用的协议不是您想要的协议时,它很有用。

不缓存每个查询的结果,而是实时地打印每一行,如果输出被挂起,这可能会减慢服务器的速度。有了这个选项,mysql就不会使用历史文件。

默认情况下,mysql客户端在输出任何内容之前会获取查询的所有结果行,并在存储这些行时计算每个列的实际值的连续最大长度。当打印输出时,它会使用这个最大值来格式化输出。

但是,当使用--quick选项时,mysql客户端不会在开始之前为要计算长度的行而等待,而是直接使用可能的最大长度。这是因为--quick选项被设计为用于那些可能返回大量结果集的情况,其中客户端可能无法将所有结果存储在内存中,或者用户可能希望尽快看到初始结果。

下面的例子中,表t1有一个类型为BIGINT的单一列,并包含4行。默认输出是9个字符宽,这个宽度等于返回行中任何列值的最大字符数(5,假设最大的BIGINT值在这个例子中没有出现),加上用于填充的空格和用作列分隔符的|字符(每个2个字符)。

但是,当使用--quick选项时,输出宽度将是25个字符宽。这是因为--quick会假设最大可能值(对于(有符号)BIGINT列,这是-9223372036854775808),并将其转换为字符串(需要19个字符),再加上用于填充和列分隔符的4个字符。

区别可以从下面的代码中看出:

$> mysql -t test -e "SELECT * FROM t1"
+-------+
| c1    |
+-------+
|   100 |
|  1000 |
| 10000 |
|    10 |
+-------+

$> mysql --quick -t test -e "SELECT * FROM t1"
+----------------------+
| c1                   |
+----------------------+
|                  100 |
|                 1000 |
|                10000 |
|                   10 |
+----------------------+

对于表格输出,围绕列的“装箱”使一个列值能够与另一个列的值区分开来。对于非特殊输出(例如在批处理模式下生成的,或者在给定--batch或--silent选项时生成的),特殊字符会在输出中转义,以便轻松识别。换行符、制表符、NUL和反斜杠分别写成\n、\t、\0和\\。--raw选项禁用此字符转义。

以下示例演示了表格输出与非表格输出以及使用原始模式禁用转义:

% mysql
mysql> SELECT CHAR(92);
+----------+
| CHAR(92) |
+----------+
| \        |
+----------+

% mysql -s
mysql> SELECT CHAR(92);
CHAR(92)
\\

% mysql -s -r
mysql> SELECT CHAR(92);
CHAR(92)
\

如果与服务器的连接丢失,请自动尝试重新连接。每次连接丢失时,都会进行一次重新连接尝试。要抑制重新连接行为,请使用--skip-reconnect。

当这个选项启用时,UPDATEDELETE语句如果其WHERE子句中没有使用键(通常是主键或唯一键)或者没有LIMIT子句,那么它们将产生错误。这是为了防止意外地更新或删除大量数据。

此外,当这个选项启用时,对于预计会产生非常大结果集的SELECT语句也会有限制。虽然SELECT语句本身不会修改数据,但返回大量数据可能会对性能和网络产生重大影响。

如果已经在一个选项文件中设置了--safe-updates,但想在某个特定的命令行中覆盖这个设置,可以使用--skip-safe-updates选项。

使用 --safe-updates时SELECT语句的自动限制(默认值为1000)。

PEM格式文件的路径名,包含服务器进行基于RSA密钥对的密码交换所需的公钥的客户端副本。此选项适用于使用sha256_password或caching_sha2_password身份验证插件进行身份验证的客户端。对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。如果不使用基于RSA的密码交换,也会忽略它,就像客户端使用安全连接连接到服务器时的情况一样。

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

对于sha256_password,此选项仅适用于使用OpenSSL构建MySQL的情况。

在Windows上,用于使用共享内存连接到本地服务器的共享内存名称。默认值为MYSQL。共享内存名称区分大小写。

仅当服务器启动时已启用shared_memory系统变量以支持共享内存连接时,此选项才适用。

如果有,请在每条语句后显示警告。此选项适用于交互式和批处理模式。

忽略SIGINT信号(通常是键入Control+C的结果)。

如果没有此选项,键入Control+C将中断当前语句(如果有),否则将取消任何部分输入行。

Silent mode (沉默模式): 当启用这个选项时,MySQL客户端会产生更少的输出。这个选项可以多次给出,每次给出都会使输出内容进一步减少。

此选项会产生非特殊的输出格式和特殊字符的转义。可以通过使用raw模式禁用转义。

不要在结果中写入列名。使用此选项会使输出右对齐,如下所示:

$> echo "SELECT * FROM t1" | mysql -t test
+-------+
| c1    |
+-------+
| a,c,d |
| c     |
+-------+
$> echo "SELECT * FROM t1" | ./mysql -uroot -Nt test
+-------+
| a,c,d |
|     c |
+-------+

当这个选项被启用时,错误消息将不会包含行号。这在某些情况下是有用的,特别是当你想要比较包含错误消息的结果文件时。

对于指定连接到本地服务器的连接,要使用的Unix套接字文件,或者在Windows上要使用的命名管道的名称。

在Windows系统上,MySQL服务器可以支持命名管道连接,这是一种在本地计算机上的进程间通信(IPC)机制。但是,命名管道连接的使用需要服务器在启动时启用了named_pipe系统变量。此外,连接的用户必须是Windows组的一个成员,该组由named_pipe_full_access_group系统变量指定。

--ssl*

以--ssl开头的选项指定是否使用加密连接到服务器,并指示在哪里可以找到ssl密钥和证书。

--ssl-fips-mode选项控制是否在客户端启用FIPS(Federal Information Processing Standards,联邦信息处理标准)模式。FIPS模式是一套由美国国家标准与技术研究所(NIST)制定的加密标准,旨在确保加密算法的安全性和一致性。

--ssl-fips-mode选项与其他--ssl-xxx选项的不同之处在于,它并不用于建立加密连接,而是用于控制允许哪些加密操作。换句话说,即使你在MySQL连接中没有使用SSL/TLS加密(例如,通过--ssl-mode=DISABLED),你仍然可以启用FIPS模式来限制某些加密操作。

以下是--ssl-fips-mode选项可以接受的值及其意义:

  • OFF: 禁用FIPS模式。客户端将不会限制其加密操作到FIPS批准的算法或模式。

  • ON: 启用FIPS模式。客户端将限制其加密操作到FIPS批准的算法或模式,但可能允许一些非FIPS标准的操作或算法在特定情况下使用。

  • STRICT: 启用“严格”FIPS模式。客户端将仅使用FIPS批准的算法或模式,并且在任何情况下都不会使用非FIPS标准的操作或算法。这通常是最安全但也是最严格的设置,因为它可能限制了某些功能或操作。

如果OpenSSL FIPS对象模块不可用,则--ssl FIPS模式唯一允许的值为OFF。在这种情况下,将--ssl fi普斯模式设置为ON或STRICT会导致客户端在启动时产生警告,并在非FIPS模式下操作。

从MySQL 8.0.34开始,不赞成使用此选项。预计它将在MySQL的未来版本中被删除。

此选项使mysql向系统日志记录工具发送交互式语句。在Unix上,这是syslog;在Windows上,它是Windows事件日志。记录的消息显示的目的地取决于系统。在Linux上,目标通常是/var/log/messages文件。

以下是在Linux上使用--syslog生成的输出示例。此输出的格式是为了可读性;每个记录的消息实际上只占用一行。

Mar  7 12:39:25 myhost MysqlClient[20824]:
  SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
  DB_SERVER:'127.0.0.1', DB:'--', QUERY:'USE test;'
Mar  7 12:39:28 myhost MysqlClient[20824]:
  SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
  DB_SERVER:'127.0.0.1', DB:'test', QUERY:'SHOW TABLES;'

以表格格式显示输出。这是交互式使用的默认设置,但可以用于以批处理模式生成表输出。

将输出的副本附加到给定的文件。此选项仅适用于交互式模式。

在MySQL中,对于使用TLSv1.3加密的连接,--tls-ciphersuites 选项允许你指定一组可接受的密码套件(ciphersuites)。该值是一个或多个由冒号(:)分隔的密码套件名称列表。你可以指定的密码套件名称取决于用来编译MySQL的SSL库。

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

对于加密连接,MySQL 的 --ssl-mode 或相关的配置选项允许你指定允许的 TLS 协议。这些协议定义了用于建立安全连接的网络通信协议。当设置这个选项时,你需要提供一个或多个以逗号分隔的协议名称列表。

可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库。不同的 SSL 库(如 OpenSSL、yaSSL、WolfSSL 等)支持不同的 TLS 协议版本。

每次查询后刷新缓冲区。

用于连接到服务器的MySQL帐户的用户名。

详细模式。产生更多关于程序功能的输出。可以多次提供此选项以产生越来越多的输出。(例如,-v-v-v即使在批处理模式下也会生成表输出格式。)

显示版本信息并退出。

垂直打印查询输出行(每列值一行)。如果没有此选项,您可以通过用\G终止单个语句来指定垂直输出。

如果无法建立连接,请等待并重试,而不是中止。

产生XML输出。

<field name="column_name">NULL</field>

当--xml与mysql一起使用时,输出与mysqldump--xml的输出相匹配。

XML输出还使用XML名称空间,如下所示:

$> mysql --xml -uroot -e "SHOW VARIABLES LIKE 'version%'"
<?xml version="1.0"?>

<resultset statement="SHOW VARIABLES LIKE 'version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="Variable_name">version</field>
<field name="Value">5.0.40-debug</field>
</row>

<row>
<field name="Variable_name">version_comment</field>
<field name="Value">Source distribution</field>
</row>

<row>
<field name="Variable_name">version_compile_machine</field>
<field name="Value">i686</field>
</row>

<row>
<field name="Variable_name">version_compile_os</field>
<field name="Value">suse-linux-gnu</field>
</row>
</resultset>

用于连接到使用zstd压缩算法的服务器的压缩级别。允许的级别为1到22,较大的值表示压缩级别的增加。默认的zstd压缩级别为3。压缩级别设置对不使用zstd压缩的连接没有影响。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值