用于连接到服务器的传输协议。当其他连接参数通常导致使用的协议不是您想要的协议时,它很有用。
不缓存每个查询的结果,而是实时地打印每一行,如果输出被挂起,这可能会减慢服务器的速度。有了这个选项,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。
当这个选项启用时,UPDATE
和DELETE
语句如果其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中添加的。