MySQL8 中文参考(十)
6.4.4 mysql_tzinfo_to_sql — 加载时区表
mysql_tzinfo_to_sql程序加载mysql数据库中的时区表。它用于具有区域信息数据库(描述时区的文件集)的系统。这些系统的示例包括 Linux、FreeBSD、Solaris 和 macOS。这些文件的一个可能位置是/usr/share/zoneinfo目录(Solaris 上为/usr/share/lib/zoneinfo)。如果您的系统没有区域信息数据库,可以使用第 7.1.15 节“MySQL 服务器时区支持”中描述的可下载软件包。
mysql_tzinfo_to_sql可以以几种方式调用:
mysql_tzinfo_to_sql *tz_dir*
mysql_tzinfo_to_sql *tz_file tz_name*
mysql_tzinfo_to_sql --leap *tz_file*
对于第一种调用语法,将区域信息目录路径名称传递给mysql_tzinfo_to_sql,并将输出发送到mysql程序。例如:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
mysql_tzinfo_to_sql读取系统的时区文件,并从中生成 SQL 语句。mysql处理这些语句以加载时区表。
第二种语法导致mysql_tzinfo_to_sql加载一个对应于时区名称*tz_name的单个时区文件tz_file*:
mysql_tzinfo_to_sql *tz_file* *tz_name* | mysql -u root mysql
如果您的时区需要考虑闰秒,使用第三种语法调用mysql_tzinfo_to_sql,该语法初始化闰秒信息。*tz_file*是您的时区文件的名称:
mysql_tzinfo_to_sql --leap *tz_file* | mysql -u root mysql
运行mysql_tzinfo_to_sql后,最好重新启动服务器,以便它不继续使用任何先前缓存的时区数据。
6.4.5 mysql_upgrade — 检查和升级 MySQL 表
注意
从 MySQL 8.0.16 开始,MySQL 服务器执行以前由 mysql_upgrade 处理的升级任务(有关详细信息,请参见 Section 3.4, “What the MySQL Upgrade Process Upgrades”)。因此,mysql_upgrade 不再需要,并且在该版本中已被弃用;预计在将来的 MySQL 版本中将其移除。由于 mysql_upgrade 不再执行升级任务,它无条件地以状态 0 退出。
每次升级 MySQL 时,您应该执行 mysql_upgrade,它会查找与升级后的 MySQL 服务器不兼容的地方:
-
它升级
mysql模式中的系统表,以便您可以利用可能已添加的新权限或功能。 -
它升级了性能模式、
INFORMATION_SCHEMA和sys模式。 -
它检查用户模式。
如果 mysql_upgrade 发现表存在可能的不兼容性,它将执行表检查,并在发现问题时尝试进行表修复。如果表无法修复,请参见 Section 3.14, “Rebuilding or Repairing Tables or Indexes” 了解手动表修复策略。
mysql_upgrade 直接与 MySQL 服务器通信,发送执行升级所需的 SQL 语句。
警告
在执行升级之前,您应始终备份当前的 MySQL 安装。请参见 Section 9.2, “Database Backup Methods”。
一些升级不兼容性可能需要在升级 MySQL 安装和运行 mysql_upgrade 之前进行特殊处理。请参见 Chapter 3, Upgrading MySQL,了解如何确定是否有任何这样的不兼容性适用于您的安装以及如何处理它们。
使用 mysql_upgrade 如下:
-
确保服务器正在运行。
-
调用 mysql_upgrade 来升级
mysql模式中的系统表,并检查和修复其他模式中的表:mysql_upgrade [*options*] -
停止服务器并重新启动,以使任何系统表更改生效。
如果有多个要升级的 MySQL 服务器实例,请使用适合连接到每个所需服务器的连接参数调用 mysql_upgrade。例如,对于在本地主机上运行在端口 3306 到 3308 上的服务器,请通过连接到相应端口来升级它们:
mysql_upgrade --protocol=tcp -P 3306 [*other_options*]
mysql_upgrade --protocol=tcp -P 3307 [*other_options*]
mysql_upgrade --protocol=tcp -P 3308 [*other_options*]
对于 Unix 上的本地主机连接,--protocol=tcp 选项强制使用 TCP/IP 进行连接,而不是使用 Unix 套接字文件。
默认情况下,mysql_upgrade 以 MySQL root 用户身份运行。如果在运行 mysql_upgrade 时 root 密码已过期,则会显示密码已过期的消息,并且 mysql_upgrade 失败。要纠正这个问题,重置 root 密码以取消过期,并再次运行 mysql_upgrade。首先,以 root 身份连接到服务器:
$> mysql -u root -p
Enter password: **** <- enter root password here
使用 ALTER USER 重置密码:
mysql> ALTER USER USER() IDENTIFIED BY '*root-password*';
然后退出 mysql 并再次运行 mysql_upgrade:
$> mysql_upgrade [*options*]
注意
如果使用 disabled_storage_engines 系统变量运行服务器以禁用某些存储引擎(例如 MyISAM),mysql_upgrade 可能会因错误而失败,如下所示:
mysql_upgrade: [ERROR] 3161: Storage engine MyISAM is disabled
(Table creation is disallowed).
为了处理这个问题,重新启动服务器以禁用 disabled_storage_engines。然后你应该能够成功运行 mysql_upgrade。之后,重新启动服务器并将 disabled_storage_engines 设置为其原始值。
除非使用 --upgrade-system-tables 选项调用,mysql_upgrade 将根据需要处理所有用户模式中的所有表。表检查可能需要很长时间才能完成。每个表都会被锁定,因此在处理过程中对其他会话不可用。检查和修复操作可能需要很长时间,特别是对于大表。表检查使用 CHECK TABLE 语句的 FOR UPGRADE 选项。有关此选项的详细信息,请参见 第 15.7.3.2 节,“CHECK TABLE 语句”。
mysql_upgrade 使用当前 MySQL 版本号标记所有已检查和修复的表。这确保下次使用相同服务器版本运行 mysql_upgrade 时,可以确定是否有必要再次检查或修复给定表。
mysql_upgrade 将 MySQL 版本号保存在名为 mysql_upgrade_info 的文件中,该文件位于数据目录中。这用于快速检查是否已为此版本检查了所有表,以便可以跳过表检查。要忽略此文件并执行检查,请使用 --force 选项。
注意
mysql_upgrade_info 文件已被弃用;预计在未来的 MySQL 版本中将被移除。
mysql_upgrade 检查 mysql.user 系统表行,并对任何具有空 plugin 列的行,如果凭据使用与该插件兼容的哈希格式,则将该列设置为 'mysql_native_password'。必须手动升级具有早期 4.1 版本密码哈希的行。
mysql_upgrade 不会升级时区表或帮助表的内容。有关升级说明,请参见 第 7.1.15 节,“MySQL 服务器时区支持”,以及 第 7.1.17 节,“服务器端帮助支持”。
除非使用 --skip-sys-schema 选项调用,否则 mysql_upgrade 如果尚未安装 sys 模式,则安装它,并在其他情况下将其升级到当前版本。如果存在 sys 模式但没有 version 视图,则会发生错误,假设其不存在表示用户创建的模式:
A sys schema exists with no sys.version view. If
you have a user created sys schema, this must be renamed for the
upgrade to succeed.
在这种情况下升级,首先删除或重命名现有的sys模式。
mysql_upgrade 支持以下选项,可以在命令行或选项文件的[mysql_upgrade]和[client]组中指定。有关 MySQL 程序使用的选项文件的信息,请参见 Section 6.2.2.2, “使用选项文件”。
表 6.11 mysql_upgrade 选项
| 选项名称 | 描述 | 引入 | 废弃 |
|---|---|---|---|
| --bind-address | 使用指定的网络接口连接到 MySQL 服务器 | ||
| --character-sets-dir | 安装字符集的目录 | ||
| --compress | 压缩客户端和服务器之间发送的所有信息 | 8.0.18 | |
| --compression-algorithms | 连接到服务器的允许压缩算法 | 8.0.18 | |
| --debug | 写入调试日志 | ||
| --debug-check | 程序退出时打印调试信息 | ||
| --debug-info | 程序退出时打印调试信息、内存和 CPU 统计信息 | ||
| --default-auth | 要使用的认证插件 | ||
| --default-character-set | 指定默认字符集 | ||
| --defaults-extra-file | 除了通常的选项文件外,还读取指定的选项文件 | ||
| --defaults-file | 仅读取指定的选项文件 | ||
| --defaults-group-suffix | 选项组后缀值 | ||
| --force | 即使 mysql_upgrade 已经为当前 MySQL 版本执行过,也要强制执行 | ||
| --get-server-public-key | 从服务器请求 RSA 公钥 | ||
| --help | 显示帮助消息并退出 | ||
| --host | MySQL 服务器所在的主机 | ||
| --login-path | 从.mylogin.cnf 中读取登录路径选项 | ||
| --max-allowed-packet | 发送到服务器或从服务器接收的最大数据包长度 | ||
| --net-buffer-length | TCP/IP 和套接字通信的缓冲区大小 | ||
| --no-defaults | 不读取任何选项文件 | ||
| --password | 连接到服务��时要使用的密码 | ||
| --pipe | 使用命名管道连接服务器(仅限 Windows) | ||
| --plugin-dir | 安装插件的目录 | ||
| --port | 连接的 TCP/IP 端口号 | ||
| --print-defaults | 打印默认选项 | ||
| --protocol | 要使用的传输协议 | ||
| --server-public-key-path | 包含 RSA 公钥的文件路径名 | ||
| --shared-memory-base-name | 共享内存连接的共享内存名称(仅限 Windows) | ||
| --skip-sys-schema | 不安装或升级 sys schema | ||
| --socket | 要使用的 Unix 套接字文件或 Windows 命名管道 | ||
| --ssl-ca | 包含受信任的 SSL 证书颁发机构列表的文件 | ||
| --ssl-capath | 包含受信任的 SSL 证书颁发机构证书文件的目录 | ||
| --ssl-cert | 包含 X.509 证书的文件 | ||
| --ssl-cipher | 连接加密的允许密码 | ||
| --ssl-crl | 包含证书吊销列表的文件 | ||
| --ssl-crlpath | 包含证书吊销列表文件的目录 | ||
| --ssl-fips-mode | 是否在客户端启用 FIPS 模式 | 8.0.34 | |
| --ssl-key | 包含 X.509 密钥的文件 | ||
| --ssl-mode | 与服务器连接的期望安全状态 | ||
| --ssl-session-data | 包含 SSL 会话数据的文件 | 8.0.29 | |
| --ssl-session-data-continue-on-failed-reuse | 如果会话重用失败是否建立连接 | 8.0.29 | |
| --tls-ciphersuites | 用于加密连接的允许的 TLSv1.3 密码套件 | 8.0.16 | |
| --tls-version | 用于加密连接的允许的 TLS 协议 | ||
| --upgrade-system-tables | 仅更新系统表,不更新用户模式 | ||
| --user | 连接到服务器时要使用的 MySQL 用户名 | ||
| --verbose | 详细模式 | ||
| --version-check | 检查正确的服务器版本 | ||
| --write-binlog | 将所有语句写入二进制日志 | ||
| --zstd-compression-level | 用于使用 zstd 压缩连接的服务器的压缩级别 | 8.0.18 | |
| 选项名称 | 描述 | 引入 | 废弃 |
-
--help命令行格式 --help显示简短的帮助消息并退出。
-
--bind-address=*ip_address*命令行格式 --bind-address=ip_address在具有多个网络接口的计算机上,使用此选项选择连接到 MySQL 服务器的接口。
-
--character-sets-dir=*dir_name*命令行格式 --character-sets-dir=dir_name类型 目录名称 字符集安装目录。参见第 12.15 节,“字符集配置”。
-
--compress,-C命令行格式 --compress[={OFF|ON}]废弃 8.0.18 类型 布尔值 默认值 OFF尽可能压缩客户端和服务器之间发送的所有信息。参见第 6.2.8 节,“连接压缩控制”。
从 MySQL 8.0.18 开始,此选项已被弃用。预计在将来的 MySQL 版本中将其移除。参见配置传统连接压缩。
-
--compression-algorithms=*value*命令行格式 --compression-algorithms=value引入 8.0.18 类型 集合 默认值 uncompressed有效值 zlib``zstd``uncompressed连接到服务器的允许的压缩算法。可用的算法与
protocol_compression_algorithms系统变量相同。默认值为uncompressed。更多信息,请参见第 6.2.8 节,“连接压缩控制”。
此选项在 MySQL 8.0.18 中添加。
-
--debug[=*debug_options*],-# [*debug_options*]命令行格式 --debug[=#]类型 字符串 默认值 d:t:O,/tmp/mysql_upgrade.trace写入调试日志。典型的*
debug_options*字符串是d:t:o,*file_name*。默认值为d:t:O,/tmp/mysql_upgrade.trace。 -
--debug-check命令行格式 --debug-check类型 布尔值 程序退出时打印一些调试信息。
-
--debug-info,-T命令行格式 --debug-info类型 布尔值 默认值 FALSE在程序退出时打印调试信息以及内存和 CPU 使用统计信息。
-
--default-auth=*plugin*命令行格式 --default-auth=plugin类型 字符串 提示使用哪个客户端身份验证插件。参见第 8.2.17 节,“可插拔身份验证”。
-
--default-character-set=*charset_name*命令行格式 --default-character-set=name类型 字符串 使用*
charset_name*作为默认字符集。参见第 12.15 节,“字符集配置”。 -
--defaults-extra-file=*file_name*命令行格式 --defaults-extra-file=file_name类型 文件名 在全局选项文件之后(在 Unix 上)但在用户选项文件之前读取此选项文件。如果文件不存在或无法访问,将出现错误。如果*
file_name*不是绝对路径名,则将其解释为相对于当前目录。关于此选项文件和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--defaults-file=*file_name*命令行格式 --defaults-file=file_name类型 文件名 仅使用给定的选项文件。如果文件不存在或无法访问,将出现错误。如果*
file_name*不是绝对路径名,则将其解释为相对于当前目录。有关此选项文件选项和其他选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--defaults-group-suffix=*str*命令行格式 --defaults-group-suffix=str类型 字符串 读取不仅是通常的选项组,还有带有通常名称和后缀为*
str*的组。例如,mysql_upgrade通常会读取[client]和[mysql_upgrade]组。如果此选项给定为--defaults-group-suffix=_other,mysql_upgrade还会读取[client_other]和[mysql_upgrade_other]组。有关此选项文件选项和其他选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--force命令行格式 --force类型 布尔值 忽略
mysql_upgrade_info文件,并强制执行,即使mysql_upgrade已经为当前版本的 MySQL 执行过。 -
--get-server-public-key命令行格式 --get-server-public-key类型 布尔值 从服务器请求用于 RSA 密钥对密码交换所需的公钥。此选项适用于使用
caching_sha2_password认证插件进行身份验证的客户端。对于该插件,除非请求,否则服务器不会发送公钥。对于不使用该插件进行身份验证的帐户,此选项将被忽略。如果不使用基于 RSA 的密码交换,例如客户端使用安全连接连接到服务器时,此选项也将被忽略。如果
--server-public-key-path=*file_name*被给定并指定了有效的公钥文件,则优先于--get-server-public-key。有关
caching_sha2_password插件的信息,请参见第 8.4.1.2 节,“Caching SHA-2 Pluggable Authentication”。 -
--host=*host_name*,-h *host_name*命令行格式 --host=name类型 字符串 连接到给定主机上的 MySQL 服务器。
-
--login-path=*name*命令行格式 --login-path=name类型 字符串 从
.mylogin.cnf登录路径文件中的指定登录路径读取选项。 “登录路径”是一个包含指定要连接到哪个 MySQL 服务器以及要作为哪个帐户进行身份验证的选项的选项组。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。请参阅 Section 6.6.7, “mysql_config_editor — MySQL Configuration Utility”。有关此选项和其他选项文件选项的其他信息,请参阅 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”。
-
--max-allowed-packet=*value*命令行格式 --max-allowed-packet=value类型 整数 默认值 25165824最小值 4096最大值 2147483648客户端/服务器通信缓冲区的最大大小。默认值为 24MB。最小值和最大值分别为 4KB 和 2GB。
-
--net-buffer-length=*value*命令行格式 --net-buffer-length=value类型 整数 默认值 1047552最小值 4096最大值 16777216客户端/服务器通信缓冲区的初始大小。默认值为 1MB − 1KB。最小值和最大值分别为 4KB 和 16MB。
-
--no-defaults命令行格式 --no-defaults不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败,则可以使用
--no-defaults来防止读取它们。例外情况是,如果存在
.mylogin.cnf文件,则在所有情况下都会读取该文件。即使使用--no-defaults,也可以以比在命令行上更安全的方式指定密码。要创建.mylogin.cnf,请使用mysql_config_editor实用程序。请参阅 Section 6.6.7, “mysql_config_editor — MySQL Configuration Utility”。有关此选项和其他选项文件选项的其他信息,请参阅 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”。
-
--password[=*password*],-p[*password*]命令行格式 --password[=name]类型 字符串 用于连接到服务器的 MySQL 帐户的密码。密码值是可选的。如果未提供,mysql_upgrade会提示输入密码。如果提供,
--password=或-p与后面的密码之间不能有空格。如果未指定密码选项,则默认不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。参见第 8.1.2.1 节,“密码安全的最终用户指南”。
明确指定没有密码,并且mysql_upgrade不应提示输入密码,使用
--skip-password选项。 -
--pipe,-W命令行格式 --pipe类型 字符串 在 Windows 上,使用命名管道连接服务器。此选项仅在服务器启动时启用了
named_pipe系统变量以支持命名管道连接时适用。此外,进行连接的用户必须是由named_pipe_full_access_group系统变量指定的 Windows 组的成员。 -
--plugin-dir=*dir_name*命令行格式 --plugin-dir=dir_name类型 目录名称 查找插件的目录。如果使用
--default-auth选项指定身份验证插件但mysql_upgrade找不到它,则指定此选项。参见第 8.2.17 节,“可插拔认证”。 -
--port=*port_num*,-P *port_num*命令行格式 --port=#类型 数字 用于 TCP/IP 连接的端口号。
-
--print-defaults命令行格式 --print-defaults打印程序名称以及从选项文件获取的所有选项。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}命令行格式 --protocol=name类型 字符串 用于连接到服务器的传输协议。当其他连接参数通常导致使用不希望使用的协议时,这很有用。有关允许值的详细信息,请参见第 6.2.7 节,“连接传输协议”。
-
--server-public-key-path=*file_name*命令行格式 --server-public-key-path=file_name类型 文件名 以 PEM 格式的文件路径名,其中包含服务器所需的用于 RSA 密钥对密码交换的客户端端公钥的副本。此选项适用于使用
sha256_password或caching_sha2_password认证插件进行身份验证的客户端。对于不使用这些插件进行身份验证的帐户,此选项将被忽略。如果不使用基于 RSA 的密码交换(例如客户端使用安全连接连接到服务器时),此选项也将被忽略。如果
--server-public-key-path=*file_name*被指定并指定了有效的公钥文件,则优先于--get-server-public-key。对于
sha256_password,此选项仅在 MySQL 使用 OpenSSL 构建时适用。有关
sha256_password和caching_sha2_password插件的信息,请参见第 8.4.1.3 节,“SHA-256 可插拔认证”和第 8.4.1.2 节,“缓存 SHA-2 可插拔认证”。 -
--shared-memory-base-name=*name*命令行格式 --shared-memory-base-name=name平台特定 Windows 在 Windows 上,用于通过共享内存连接到本地服务器的共享内存名称。默认值为
MYSQL。共享内存名称区分大小写。仅当服务器启用了
shared_memory系统变量以支持共享内存连��时,此选项才适用。 -
--skip-sys-schema命令行格式 --skip-sys-schema类型 布尔值 默认值 FALSE默认情况下,mysql_upgrade如果未安装
sys模式,则安装它,并将其升级到当前版本。--skip-sys-schema选项会抑制此行为。 -
--socket=*path*,-S *path*命令行格式 --socket={file_name|pipe_name}类型 字符串 对于连接到
localhost的连接,要使用的 Unix 套接字文件,或者在 Windows 上,要使用的命名管道的名称。在 Windows 上,只有在服务器启动时启用了
named_pipe系统变量以支持命名管道连接时,此选项才适用。此外,进行连接的用户必须是由named_pipe_full_access_group系统变量指定的 Windows 组的成员。 -
--ssl*以
--ssl开头的选项指定是否使用加密连接连接到服务器,并指示 SSL 密钥和证书的位置。请参见加密连接的命令选项。 -
--ssl-fips-mode={OFF|ON|STRICT}命令行格式 --ssl-fips-mode={OFF|ON|STRICT}已弃用 8.0.34 类型 枚举 默认值 OFF有效值 OFF``ON``STRICT控制是否在客户端端启用 FIPS 模式。
--ssl-fips-mode选项与其他--ssl-*xxx*选项不同,它不用于建立加密连接,而是影响允许哪些加密操作。请参见第 8.8 节,“FIPS 支持”。允许使用这些
--ssl-fips-mode值:-
OFF:禁用 FIPS 模式。 -
ON:启用 FIPS 模式。 -
STRICT:启用“严格” FIPS 模式。
注意
如果 OpenSSL FIPS Object 模块不可用,则
--ssl-fips-mode的唯一允许值是OFF。在这种情况下,将--ssl-fips-mode设置为ON或STRICT会导致客户端在启动时产生警告并在非 FIPS 模式下运行。从 MySQL 8.0.34 开始,此选项已弃用。预计在将来的 MySQL 版本中将其移除。
-
-
--tls-ciphersuites=*ciphersuite_list*命令行格式 --tls-ciphersuites=ciphersuite_list引入版本 8.0.16 类型 字符串 用于使用 TLSv1.3 的加密连接的允许密码套件。该值是一个或多个以冒号分隔的密码套件名称列表。可以为此选项命名的密码套件取决于用于编译 MySQL 的 SSL 库。有关详细信息,请参见第 8.3.2 节,“加密连接 TLS 协议和密码”。
此选项是在 MySQL 8.0.16 中添加的。
-
--tls-version=*protocol_list*命令行格式 --tls-version=protocol_list类型 字符串 默认值 (≥ 8.0.16) TLSv1,TLSv1.1,TLSv1.2,TLSv1.3(OpenSSL 1.1.1 或更高版本)TLSv1,TLSv1.1,TLSv1.2(否则)默认值 (≤ 8.0.15) TLSv1,TLSv1.1,TLSv1.2加密连接的可接受 TLS 协议。该值是一个或多个逗号分隔的协议名称列表。可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库。有关详细信息,请参见 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”。
-
--upgrade-system-tables,-s命令行格式 --upgrade-system-tables类型 布尔值 仅升级
mysql模式中的系统表,不升级用户模式。 -
--user=*user_name*,-u *user_name*命令行格式 --user=name类型 字符串 用于连接到服务器的 MySQL 帐户的用户名。默认用户名为
root。 -
--verbose命令行格式 --verbose类型 布尔值 详细模式。打印有关程序操作的更多信息。
-
--version-check,-k命令行格式 --version-check类型 布尔值 检查 mysql_upgrade 连接的服务器版本,以验证其与构建 mysql_upgrade 的版本相同。如果不同,mysql_upgrade 将退出。此选项默认启用;要禁用检查,请使用
--skip-version-check。 -
--write-binlog命令行格式 --write-binlog类型 布尔值 默认值 OFF默认情况下,mysql_upgrade 的二进制日志记录是禁用的。如果希望将其操作写入二进制日志,请使用
--write-binlog。当服务器启用全局事务标识符(GTIDs)时(
gtid_mode=ON),不要通过 mysql_upgrade 启用二进制日志记录。 -
--zstd-compression-level=*level*命令行格式 --zstd-compression-level=#引入版本 8.0.18 类型 整数 用于使用
zstd压缩算法连接到服务器的压缩级别。允许的级别从 1 到 22,较大的值表示较高级别的压缩。默认的zstd压缩级别为 3。压缩级别设置对不使用zstd压缩的连接没有影响。有关更多信息,请参见第 6.2.8 节,“连接压缩控制”。
此选项是在 MySQL 8.0.18 中添加的。
6.5 客户端程序
6.5.1 mysql — MySQL 命令行客户端
6.5.2 mysqladmin — 一个 MySQL 服务器管理程序
6.5.3 mysqlcheck — 一个表维护程序
6.5.4 mysqldump — 一个数据库备份程序
6.5.5 mysqlimport — 一个数据导入程序
6.5.6 mysqlpump — 一个数据库备份程序
6.5.7 mysqlshow — 显示数据库、表和列信息
6.5.8 mysqlslap — 一个负载仿真客户端
本节描述连接到 MySQL 服务器的客户端程序。
6.5.1 mysql — MySQL 命令行客户端
6.5.1.1 mysql 客户端选项
6.5.1.2 mysql 客户端命令
6.5.1.3 mysql 客户端日志记录
6.5.1.4 mysql 客户端服务器端帮助
6.5.1.5 从文本文件执行 SQL 语句
6.5.1.6 mysql 客户端技巧
mysql 是一个带有输入行编辑功能的简单 SQL shell。它支持交互和非交互使用。在交互使用时,查询结果以 ASCII 表格格式呈现。在非交互使用时(例如作为过滤器),结果以制表符分隔的格式呈现。可以使用命令选项更改输出格式。
如果由于结果集过大而导致内存不足而出现问题,请使用 --quick 选项。这会强制mysql逐行从服务器检索结果,而不是检索整个结果集并在显示之前将其缓冲在内存中。这是通过在客户端/服务器库中使用 mysql_use_result() C API 函数而不是 mysql_store_result() 来返回结果集来完成的。
注意
或者,MySQL Shell 提供对 X DevAPI 的访问。详情请参阅 MySQL Shell 8.0。
使用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 客户端会将交互执行的语句记录到历史文件中。请参阅 6.5.1.3 “mysql 客户端日志记录”。
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html
6.5.1.1 mysql 客户端选项
mysql 支持以下选项,可以在命令行或选项文件的 [mysql] 和 [client] 组中指定。有关 MySQL 程序使用的选项文件的信息,请参见 6.2.2.2 使用选项文件。
表 6.12 mysql 客户端选项
| 选项名称 | 描述 | 引入 | 废弃 |
|---|---|---|---|
| --auto-rehash | 启用自动重新哈希 | ||
| --auto-vertical-output | 启用自动垂直结果集显示 | ||
| --batch | 不使用历史文件 | ||
| --binary-as-hex | 以十六进制表示显示二进制值 | ||
| --binary-mode | 禁用 \r\n - 到 - \n 的转换和将 \0 视为查询结束 | ||
| --bind-address | 使用指定的网络接口连接到 MySQL 服务器 | ||
| --character-sets-dir | 安装字符集的目录 | ||
| --column-names | 在结果中写入列名 | ||
| --column-type-info | 显示结果集元数据 | ||
| --comments | 是否保留或剥离发送到服务器的语句中的注释 | ||
| --compress | 压缩客户端和服务器之间发送的所有信息 | 8.0.18 | |
| --compression-algorithms | 连接到服务器的允许压缩算法 | 8.0.18 | |
| --connect-expired-password | 指示服务器客户端可以处理过期密码沙盒模式 | ||
| --connect-timeout | 连接超时前的秒数 | ||
| --database | 要使用的数据库 | ||
| --debug | 写入调试日志;仅在 MySQL 构建时支持调试时可用 | ||
| --debug-check | 程序退出时打印调试信息 | ||
| --debug-info | 程序退出时打印调试信息、内存和 CPU 统计 | ||
| --default-auth | 要使用的认证插件 | ||
| --default-character-set | 指定默认字符集 | ||
| --defaults-extra-file | 除了通常的选项文件外,读取命名的选项文件 | ||
| --defaults-file | 仅读取命名的选项文件 | ||
| --defaults-group-suffix | 选项组后缀值 | ||
| --delimiter | 设置语句分隔符 | ||
| --dns-srv-name | 使用 DNS SRV 查找主机信息 | 8.0.22 | |
| --enable-cleartext-plugin | 启用明文认证插件 | ||
| --execute | 执行语句并退出 | ||
| --fido-register-factor | 必须进行注册的多因素认证因素 | 8.0.27 | 8.0.35 |
| --force | 即使发生 SQL 错误也继续 | ||
| --get-server-public-key | 从服务器请求 RSA 公钥 | ||
| --help | 显示帮助信息并退出 | ||
| --histignore | 指定要忽略记录的语句模式 | ||
| --host | MySQL 服务器所在的主机 | ||
| --html | 生成 HTML 输出 | ||
| --ignore-spaces | 忽略函数名后的空格 | ||
| --init-command | 连接后要执行的 SQL 语句 | ||
| --line-numbers | 为错误写入行号 | ||
| --load-data-local-dir | LOAD DATA LOCAL 语句中命名文件的目录 | 8.0.21 | |
| --local-infile | 启用或禁用 LOAD DATA 的 LOCAL 功能 | ||
| --login-path | 从.mylogin.cnf 中读取登录路径选项 | ||
| --max-allowed-packet | 发送到服务器或从服务器接收的最大数据包长度 | ||
| --max-join-size | 在使用--safe-updates 时,联接中的行的自动限制 | ||
| --named-commands | 启用命名的 mysql 命令 | ||
| --net-buffer-length | TCP/IP 和套接字通信的缓冲区大小 | ||
| --network-namespace | 指定网络命名空间 | 8.0.22 | |
| --no-auto-rehash | 禁用自动重新哈希 | ||
| --no-beep | 发生错误时不发出蜂鸣声 | ||
| --no-defaults | 不读取任何选项文件 | ||
| --oci-config-file | 定义 Oracle Cloud Infrastructure CLI 配置文件的替代位置。 | 8.0.27 | |
| --one-database | 忽略除了命令行上指定的默认数据库之外的语句 | ||
| --pager | 用于分页查询输出的给定命令 | ||
| --password | 连接到服务器时使用的密码 | ||
| --password1 | 连接到服务器时使用的第一个多因素身份验证密码 | 8.0.27 | |
| --password2 | 连接到服务器时使用的第二个多因素身份验证密码 | 8.0.27 | |
| --password3 | 连接到服务器时使用的第三个多因素身份验证密码 | 8.0.27 | |
| --pipe | 使用命名管道连接服务器(仅限 Windows) | ||
| --plugin-authentication-kerberos-client-mode | 允许在 Windows 上通过 MIT Kerberos 库进行 GSSAPI 可插拔身份验证 | 8.0.32 | |
| --plugin-dir | 插件安装目录 | ||
| --port | 连接的 TCP/IP 端口号 | ||
| --print-defaults | 打印默认选项 | ||
| --prompt | 设置指定格式的提示符 | ||
| --protocol | 使用的传输协议 | ||
| --quick | 不缓存每个查询结果 | ||
| --raw | 写入列值而不进行转义转换 | ||
| --reconnect | 如果与服务器的连接丢失,自动尝试重新连接 | ||
| --safe-updates, --i-am-a-dummy | 仅允许指定键值的 UPDATE 和 DELETE 语句 | ||
| --select-limit | 在使用 --safe-updates 时 SELECT 语句的自动限制 | ||
| --server-public-key-path | 包含 RSA 公钥的文件的路径名 | ||
| --shared-memory-base-name | 共享内存连接的共享内存名称(仅限 Windows) | ||
| --show-warnings | 如果有任何警告,则在每个语句后显示警告 | ||
| --sigint-ignore | 忽略 SIGINT 信号(通常是键入 Control+C 的结果) | ||
| --silent | 静默模式 | ||
| --skip-auto-rehash | 禁用自动重新哈希 | ||
| --skip-column-names | 在结果中不写入列名 | ||
| --skip-line-numbers | 跳过错误的行号 | ||
| --skip-named-commands | 禁用命名的 mysql 命令 | ||
| --skip-pager | 禁用分��� | ||
| --skip-reconnect | 禁用重新连接 | ||
| --socket | 要使用的 Unix 套接字文件或 Windows 命名管道 | ||
| --ssl-ca | 包含受信任的 SSL 证书颁发机构列表的文件 | ||
| --ssl-capath | 包含受信任的 SSL 证书颁发机构证书文件的目录 | ||
| --ssl-cert | 包含 X.509 证书的文件 | ||
| --ssl-cipher | 连接加密的允许密码 | ||
| --ssl-crl | 包含证书吊销列表的文件 | ||
| --ssl-crlpath | 包含证书吊销列表文件的目录 | ||
| --ssl-fips-mode | 是否在客户端启用 FIPS 模式 | 8.0.34 | |
| --ssl-key | 包含 X.509 密钥的文件 | ||
| --ssl-mode | 与服务器连接的期望安全状态 | ||
| --ssl-session-data | 包含 SSL 会话数据的文件 | 8.0.29 | |
| --ssl-session-data-continue-on-failed-reuse | 如果会话重用失败是否建立连接 | 8.0.29 | |
| --syslog | 将交互式语句记录到 syslog | ||
| --table | 以表格格式显示输出 | ||
| --tee | 将输出的副本追加到指定文件 | ||
| --tls-ciphersuites | 加密连接的允许的 TLSv1.3 密码套件 | 8.0.16 | |
| --tls-version | 加密连接的允许的 TLS 协议 | ||
| --unbuffered | 在每个查询后刷新缓冲区 | ||
| --user | 连接到服务器时要使用的 MySQL 用户名 | ||
| --verbose | 详细模式 | ||
| --version | 显示版本信息并退出 | ||
| --vertical | 垂直打印查询输出行(每列值一行) | ||
| --wait | 如果无法建立连接,则等待并重试,而不是中止 | ||
| --xml | 生成 XML 输出 | ||
| --zstd-compression-level | 使用 zstd 压缩连接到服务器的压缩级别 | 8.0.18 | |
| 选项名称 | 描述 | 引入 | 废弃 |
-
--help,-?命令行格式 --help显示帮助信息并退出。
-
--auto-rehash命令行格式 --auto-rehash禁用方式 skip-auto-rehash启用自动 rehash。默认情况下,此选项已启用,可实现数据库、表和列名的自动补全。使用
--disable-auto-rehash来禁用 rehash。这会使mysql启动更快,但如果要使用名称补全,则必须发出rehash命令或其\#快捷方式。要完成一个名称,输入第一部分并按 Tab 键。如果名称是明确的,mysql会自动完成。否则,您可以再次按 Tab 键查看以您已输入的内容开头的可能名称。如果没有默认数据库,则不会发生自动完成。
注意
此功能需要使用readline库编译的 MySQL 客户端。通常,readline库在 Windows 上不可用。
-
--auto-vertical-output命令行格式 --auto-vertical-output如果结果集对当前窗口太宽,则使其以垂直方式显示,否则使用正常的表格格式显示。(这适用于以
;或\G结尾的语句。) -
--batch,-B命令行格式 --batch使用制表符作为列分隔符打印结果,每行显示在新行上。使用此选项,mysql不使用历史文件。
批处理模式导致非表格输出格式和特殊字符的转义。可以通过使用原始模式来禁用转义;请参阅
--raw选项的描述。 -
--binary-as-hex命令行格式 --binary-as-hex类型 布尔值 默认值(≥ 8.0.19) 非交互模式下为 FALSE默认值(≤ 8.0.18) FALSE当给定此选项时,mysql会使用十六进制表示法(
0x*value*)显示二进制数据。无论整体输出显示格式是表格、垂直、HTML 还是 XML,都会发生这种情况。当启用
--binary-as-hex选项时,会影响所有二进制字符串的显示,包括由CHAR()和UNHEX()等函数返回的字符串。以下示例演示了使用 ASCII 码A(65 十进制,41 十六进制)的情况:-
禁用
--binary-as-hex:mysql> SELECT CHAR(0x41), UNHEX('41'); +------------+-------------+ | CHAR(0x41) | UNHEX('41') | +------------+-------------+ | A | A | +------------+-------------+ -
启用
--binary-as-hex:mysql> SELECT CHAR(0x41), UNHEX('41'); +------------------------+--------------------------+ | CHAR(0x41) | UNHEX('41') | +------------------------+--------------------------+ | 0x41 | 0x41 | +------------------------+--------------------------+
要编写一个二进制字符串表达式,以便无论是否启用
--binary-as-hex,都将其显示为字符字符串,请使用以下技术:-
CHAR()函数有一个USING *charset*子句:mysql> SELECT CHAR(0x41 USING utf8mb4); +--------------------------+ | CHAR(0x41 USING utf8mb4) | +--------------------------+ | A | +--------------------------+ -
更一般地,使用
CONVERT()将表达式转换为给定的字符集:mysql> SELECT CONVERT(UNHEX('41') USING utf8mb4); +------------------------------------+ | CONVERT(UNHEX('41') USING utf8mb4) | +------------------------------------+ | A | +------------------------------------+
截至 MySQL 8.0.19 版本,当mysql以交互模式运行时,默认情况下启用此选项。此外,当隐式或显式启用该选项时,
status(或\s)命令的输出包括以下行:Binary data as: Hexadecimal要禁用十六进制表示法,请使用
--skip-binary-as-hex。 -
-
--binary-mode命令行格式 --binary-mode此选项有助于处理可能包含
BLOB值的mysqlbinlog输出。默认情况下,mysql将语句字符串中的\r\n转换为\n,并将\0解释为语句终止符。--binary-mode禁用这两个功能。它还在非交互模式下禁用所有mysql命令,除了在输入通过管道传输到mysql或使用source命令加载时的charset和delimiter。 -
--bind-address=*ip_address*命令行格式 --bind-address=ip_address在具有多个网络接口的计算机上,使用此选项选择连接到 MySQL 服务器的接口。
-
--character-sets-dir=*dir_name*命令行格式 --character-sets-dir=dir_name类型 目录���称 安装字符集的目录。请参阅第 12.15 节,“字符集配置”。
-
--column-names命令行格式 --column-names写入结果中的列名。
-
--column-type-info命令行格式 --column-type-info显示结果集元数据。此信息对应于 C API
MYSQL_FIELD数据结构的内容。请参阅 C API 基本数据结构。 -
--comments,-c命令行格式 --comments类型 布尔值 默认值 FALSE是否剥离或保留发送到服务器的语句中的注释。默认为
--skip-comments(剥离注释),启用则使用--comments(保留注释)。注意
无论是否给出此选项,mysql客户端始终向服务器传递优化器提示。
注释剥离已弃用。预计此功能及其控制选项将在未来的 MySQL 版本中被移除。
-
--compress,-C命令行格式 --compress[={OFF|ON}]已弃用 8.0.18 类型 布尔值 默认值 OFF如果可能的话,尽量压缩客户端和服务器之间发送的所有信息。参见 第 6.2.8 节,“连接压缩控制”。
从 MySQL 8.0.18 开始,此选项已弃用。预计在未来的 MySQL 版本中将其移除。请参见 配置传统连接压缩。
-
--compression-algorithms=*value*命令行格式 --compression-algorithms=value引入版本 8.0.18 类型 集合 默认值 uncompressed有效数值 zlib``zstd``uncompressed连接到服务器的允许的压缩算法。可用的算法与
protocol_compression_algorithms系统变量相同。默认值为uncompressed。有关更多信息,请参见 第 6.2.8 节,“连接压缩控制”。
此选项在 MySQL 8.0.18 中添加。
-
--connect-expired-password命令行格式 --connect-expired-password表示客户端可以处理沙盒模式,如果用于连接的帐户密码已过期。这对于非交互式调用 mysql 可能很有用,因为通常情况下,服务器会断开尝试使用帐户密码已过期的帐户连接的非交互式客户端。(参见 第 8.2.16 节,“服务器处理过期密码”。)
-
--connect-timeout=*value*命令行格式 --connect-timeout=value类型 数值 默认值 0连接超时之前的秒数。(默认值为
0。) -
--database=*db_name*,-D *db_name*命令行格式 --database=dbname类型 字符串 要使用的数据库。这主要在选项文件中很有用。
-
--debug[=*debug_options*],-# [*debug_options*]命令行格式 --debug[=debug_options]类型 字符串 默认值 d:t:o,/tmp/mysql.trace写一个调试日志。一个典型的*
debug_options*字符串是d:t:o,*file_name*。默认值是d:t:o,/tmp/mysql.trace。只有在使用
WITH_DEBUG构建 MySQL 时才可用。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--debug-check命令行格式 --debug-check类型 布尔值 默认值 FALSE在程序退出时打印一些调试信息。
只有在使用
WITH_DEBUG构建 MySQL 时才可用。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--debug-info,-T命令行格式 --debug-info类型 布尔值 默认值 FALSE在程序退出时打印调试信息以及内存和 CPU 使用统计信息。
只有在使用
WITH_DEBUG构建 MySQL 时才可用。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--default-auth=*plugin*命令行格式 --default-auth=plugin类型 字符串 一个关于使用哪个客户端端身份验证插件的提示。请参阅第 8.2.17 节,“可插拔认证”。
-
--default-character-set=*charset_name*命令行格式 --default-character-set=charset_name类型 字符串 将*
charset_name*用作客户端和连接的默认字符集。如果操作系统使用一个字符集,而mysql客户端默认使用另一个字符集,则此选项可能很有用。在这种情况下,输出可能格式不正确。通常可以通过使用此选项强制客户端使用系统字符集来解决此类问题。
欲了解更多信息,请参阅第 12.4 节,“连接字符集和校对规则”,以及第 12.15 节,“字符集配置”。
-
--defaults-extra-file=*file_name*命令行格式 --defaults-extra-file=file_name类型 文件名 在全局选项文件之后但(在 Unix 上)在用户选项文件之前读取此选项文件。如果文件不存在或无法访问,将会出现错误。如果*
file_name*不是绝对路径名,则将其解释为相对于当前目录。关于此选项文件和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--defaults-file=*file_name*命令行格式 --defaults-file=file_name类型 文件名 仅使用给定的选项文件。如果文件不存在或无法访问,将会出现错误。如果*
file_name*不是绝对路径名,则将其解释为相对于当前目录。例外:即使使用
--defaults-file,客户端程序也会读取.mylogin.cnf。关于此选项文件和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--defaults-group-suffix=*str*命令行格式 --defaults-group-suffix=str类型 字符串 不仅读取通常的选项组,还读取具有通常名称和后缀*
str*的组。例如,mysql通常会读取[client]和[mysql]组。如果给定此选项为--defaults-group-suffix=_other,mysql还会读取[client_other]和[mysql_other]组。关于此选项文件和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--delimiter=*str*命令行格式 --delimiter=str类型 字符串 默认值 ;设置语句分隔符。默认为分号字符(
;)。 -
--disable-named-commands禁用命名命令。仅使用
\*形式,或仅在以分号(;)结尾的行的开头使用命名命令。mysql默认启用此选项。但是,即使使用此选项,长格式命令仍然可以从第一行起作用。请参见第 6.5.1.2 节,“mysql 客户端命令”。 -
--dns-srv-name=*name*命令行格式 --dns-srv-name=name引入版本 8.0.22 类型 字符串 指定确定用于建立与 MySQL 服务器的连接的候选主机的 DNS SRV 记录的名称。有关 MySQL 中 DNS SRV 支持的信息,请参见 第 6.2.6 节,“使用 DNS SRV 记录连接到服务器”。
假设 DNS 配置了
example.com域的此 SRV 信息:Name TTL Class Priority Weight Port Target _mysql._tcp.example.com. 86400 IN SRV 0 5 3306 host1.example.com _mysql._tcp.example.com. 86400 IN SRV 0 10 3306 host2.example.com _mysql._tcp.example.com. 86400 IN SRV 10 5 3306 host3.example.com _mysql._tcp.example.com. 86400 IN SRV 20 5 3306 host4.example.com要使用该 DNS SRV 记录,请像这样调用 mysql:
mysql --dns-srv-name=_mysql._tcp.example.commysql 然后尝试连接组中的每个服务器,直到建立成功的连接。仅当无法建立到任何服务器的连接时才会发生连接失败。DNS SRV 记录中的优先级和权重值确定应尝试的服务器顺序。
当使用
--dns-srv-name调用时,mysql 仅尝试建立 TCP 连接。如果同时给出
--dns-srv-name选项和--host选项,则--dns-srv-name选项优先于--host选项。如果在 mysql 启动时同时给出了--dns-srv-name选项以指定 DNS SRV 记录,并且随后在运行时使用connect命令并指定主机名参数,则该主机名优先于任何--dns-srv-name选项。此选项是在 MySQL 8.0.22 中添加的。
-
--enable-cleartext-plugin命令行格式 --enable-cleartext-plugin类型 布尔 默认值 FALSE启用
mysql_clear_password明文认证插件。(请参阅 第 8.4.1.4 节,“客户端端明文插件认证”。) -
--execute=*statement*,-e *statement*命令行格式 --execute=statement类型 字符串 执行语句并退出。默认输出格式类似于使用
--batch生成的格式。有关示例,请参见 第 6.2.2.1 节,“在命令行上使用选项”。使用此选项,mysql 不使用历史文件。 -
--fido-register-factor=*value*命令行格式 --fido-register-factor=value引入 8.0.27 已弃用 8.0.35 类型 字符串 注意
从 MySQL 8.0.35 开始,此选项已弃用,并可能在未来的 MySQL 发行版中删除。
必须执行 FIDO 设备注册的因素或因素。此选项值必须是单个值,或用逗号分隔的两个值。每个值必须是 2 或 3,因此允许的选项值为
'2'、'3'、'2,3'和'3,2'。例如,需要为第三个认证因素注册的帐户调用 mysql 客户端如下:
mysql --user=*user_name* --fido-register-factor=3需要为第二个和第三个认证因素注册的帐户调用 mysql 客户端如下:
mysql --user=*user_name* --fido-register-factor=2,3如果注册成功,将建立连接。如果存在待注册的认证因素,在尝试连接到服务器时,连接将进入待注册模式。在这种情况下,断开连接并重新连接,使用正确的
--fido-register-factor值完成注册。注册是一个包括 启动注册 和 完成注册 步骤的两步过程。启动注册步骤执行以下语句:
ALTER USER *user* *factor* INITIATE REGISTRATION该语句返回一个包含 32 字节挑战、用户名和依赖方 ID(参见
authentication_fido_rp_id)的结果集。完成注册步骤执行以下语句:
ALTER USER *user* *factor* FINISH REGISTRATION SET CHALLENGE_RESPONSE AS '*auth_string*'该语句完成注册并将以下信息作为
auth_string的一部分发送到服务器:认证器数据,X.509 格式的可选证书,以及签名。必须在单个连接中执行启动和注册步骤,因为客户端在启动步骤期间接收到的挑战会保存到客户端连接处理程序中。如果注册步骤由不同的连接执行,注册将失败。
--fido-register-factor选项执行启动和注册步骤,避免了上述失败场景,并避免了手动执行ALTER USER启动和注册语句。--fido-register-factor选项仅适用于 mysql 客户端和 MySQL Shell。其他 MySQL 客户端程序不支持该选项。有关相关信息,请参阅使用 FIDO 认证。
-
--force,-f命令行格式 --force即使发生 SQL 错误,也继续执行。
-
--get-server-public-key命令行格式 --get-server-public-key类型 布尔值 从服务器请求用于 RSA 密钥对密码交换所需的公钥。此选项适用于使用
caching_sha2_password认证插件进行身份验证的客户端。对于该插件,除非请求,否则服务器不会发送公钥。对于不使用该插件进行身份验证的帐户,此选项将被忽略。如果不使用基于 RSA 的密码交换(例如客户端使用安全连接连接到服务器时),此选项也将被忽略。如果提供了
--server-public-key-path=*file_name*并指定了有效的公钥文件,则它优先于--get-server-public-key。有关
caching_sha2_password插件的信息,请参阅第 8.4.1.2 节,“缓存 SHA-2 可插拔认证”。 -
--histignore命令行格式 --histignore=pattern_list类型 字符串 一个或多个以冒号分隔的模式列表,用于指定在记录日志时要忽略的语句。这些模式将添加到默认模式列表(
"*IDENTIFIED*:*PASSWORD*")中。为此选项指定的值会影响写入历史文件和syslog(如果给出了--syslog选项)的语句的记录。有关更多信息,请参阅第 6.5.1.3 节,“mysql 客户端日志记录”。 -
--host=*host_name*,-h *host_name*命令行格式 --host=host_name类型 字符串 默认值 localhost连接到给定主机上的 MySQL 服务器。
如果同时给出
--dns-srv-name选项和--host选项,则--dns-srv-name选项优先于--host选项。--dns-srv-name导致连接建立使用mysql_real_connect_dns_srv()C API 函数而不是mysql_real_connect()。但是,如果在运行时随后使用connect命令并指定主机名参数,则该主机名优先于在 mysql 启动时给出的任何--dns-srv-name选项以指定 DNS SRV 记录。 -
--html,-H命��行格式 --html生成 HTML 输出。
-
--ignore-spaces,-i命令行格式 --ignore-spaces忽略函数名后的空格。其效果在
IGNORE_SPACESQL 模式的讨论中有描述(参见第 7.1.11 节,“服务器 SQL 模式”)。 -
--init-command=str命令行格式 --init-command=str连接到服务器后要执行的单个 SQL 语句。如果启用了自动重新连接,则在重新连接发生后再次执行该语句。
-
--line-numbers命令行格式 --line-numbers禁用者 skip-line-numbers为错误写入行号。使用
--skip-line-numbers禁用此功能。 -
--load-data-local-dir=*dir_name*命令行格式 --load-data-local-dir=dir_name引入版本 8.0.21 类型 目录名称 默认值 空字符串此选项影响客户端端的
LOCAL能力,用于LOAD DATA操作。它指定了LOAD DATA LOCAL语句中命名的文件必须位于的目录。--load-data-local-dir的效果取决于是否启用或禁用了LOCAL数据加载:-
如果启用了
LOCAL数据加载,无论是在 MySQL 客户端库中默认启用还是通过指定--local-infile[=1],都会忽略--load-data-local-dir选项。 -
如果禁用了
LOCAL数据加载,无论是默认在 MySQL 客户端库中还是通过指定--local-infile=0,都会应用--load-data-local-dir选项。
当应用
--load-data-local-dir时,选项值指定了必须位于其中的本地数据文件的目录。无论底层文件系统的大小写敏感性如何,目录路径名和要加载的文件的路径名的比较都是区分大小写的。如果选项值为空字符串,则不指定任何目录,结果是不允许进行本地数据加载。例如,要显式禁用除位于
/my/local/data目录中的文件之外的���地数据加载,请像这样调用mysql:mysql --local-infile=0 --load-data-local-dir=/my/local/data当同时给出
--local-infile和--load-data-local-dir时,它们给出的顺序并不重要。在mysql中成功使用
LOCAL加载操作还需要服务器允许本地加载;请参阅第 8.1.6 节,“LOAD DATA LOCAL 的安全考虑”--load-data-local-dir选项是在 MySQL 8.0.21 中添加的。 -
-
命令行格式 `--local-infile[={0 1}]` 类型 布尔值 默认值 FALSE默认情况下,
LOAD DATA的LOCAL功能由编译到 MySQL 客户端库中的默认值确定。要显式启用或禁用LOCAL数据加载,请使用--local-infile选项。当不带值给出时,该选项启用LOCAL数据加载。当作为--local-infile=0或--local-infile=1给出时,该选项禁用或启用LOCAL数据加载。如果禁用了
LOCAL功能,则可以使用--load-data-local-dir选项来允许在指定目录中的文件进行受限制的本地加载。在mysql中成功使用
LOCAL加载操作还需要服务器允许本地加载;请参阅第 8.1.6 节,“LOAD DATA LOCAL 的安全考虑” -
--login-path=*name*命令行格式 --login-path=name类型 字符串 从
.mylogin.cnf登录路径文件中的命名登录路径读取选项。 “登录路径”是一个包含指定要连接的 MySQL 服务器和要进行身份验证的帐户的选项组。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。请参见第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”。有关此选项和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--max-allowed-packet=*value*命令行格式 --max-allowed-packet=value类型 数值 默认值 16777216客户端/服务器通信缓冲区的最大大小。默认值为 16MB,最大值为 1GB。
-
--max-join-size=*value*命令行格式 --max-join-size=value类型 数值 默认值 1000000在使用
--safe-updates时,连接中联接的行的自动限制。(默认值为 1,000,000。) -
--named-commands,-G命令行格式 --named-commands被 skip-named-commands禁用启用命名mysql命令。允许长格式命令,而不仅仅是短格式命令。例如,
quit和\q都被识别。使用--skip-named-commands来禁用命名命令。请参见第 6.5.1.2 节,“mysql 客户端命令”。 -
--net-buffer-length=*value*命令行格式 --net-buffer-length=value类型 数值 默认值 16384TCP/IP 和套接字通信的缓冲区大小。(默认值为 16KB。)
-
--network-namespace=*name*命令行格式 --network-namespace=name引入版本 8.0.22 类型 字符串 用于 TCP/IP 连接的网络命名空间。如果省略,连接将使用默认(全局)命名空间。有关网络命名空间的信息,请参见第 7.1.14 节,“网络命名空间支持”。
此选项已添加到 MySQL 8.0.22 中。仅在实现网络命名空间支持的平台上可用。
-
--no-auto-rehash,-A命令行格式 --no-auto-rehash已弃用 是 这与
--skip-auto-rehash具有相同的效果。请参阅--auto-rehash的描述。 -
--no-beep,-b命令行格式 --no-beep当发生错误时不发出蜂鸣声。
-
--no-defaults命令行格式 --no-defaults不要读取任何选项文件。如果程序启动失败是因为从选项文件中读取了未知选项,可以使用
--no-defaults来阻止它们被读取。例外情况是,如果存在
.mylogin.cnf文件,则在所有情况下都会读取该文件。这允许以比在命令行上更安全的方式指定密码,即使使用--no-defaults也是如此。要创建.mylogin.cnf,请使用mysql_config_editor实用程序。请参阅第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”。有关此选项和其他选项文件选项的附加信息,请参阅第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--one-database,-o命令行格式 --one-database忽略除了在默认数据库为命令行上指定的数据库时发生的语句之外的所有语句。此选项是基本的,应谨慎使用。语句过滤仅基于
USE语句。最初,mysql执行输入中的语句,因为在命令行上指定一个数据库*
db_name*等同于在输入开头插入USE *db_name*。然后,对于每个遇到的USE语句,mysql根据命令行上的数据库名接受或拒绝后续语句。语句的内容并不重要。假设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处理输入如下:
-
DELETE语句会被执行,因为默认数据库是db1,尽管该语句指定了不同数据库中的表。 -
DROP TABLE和CREATE TABLE语句不会被执行,因为默认数据库不是db1,尽管这些语句指定了db1中的表。 -
INSERT和CREATE TABLE语句会被执行,因为默认数据库是db1,尽管CREATE TABLE语句指定了不同数据库中的表。
-
-
命令行格式 --pager[=command]被 skip-pager禁用--password[=password]类型 字符串 使用给定的命令来分页查询输出。如果省略命令,则默认分页器是您的
PAGER环境变量的值。有效的分页器包括 less、more、cat [> filename] 等。此选项仅在 Unix 上以及仅在交互模式下有效。要禁用分页,请使用--skip-pager。Section 6.5.1.2, “mysql Client Commands” 进一步讨论了输出分页。 -
--password[=*password*],-p[*password*]命令行格式 --password[=password]类型 字符串 用于连接到服务器的 MySQL 账户的密码。密码值是可选的。如果没有提供,mysql 会提示输入密码。如果提供了密码,
--password=或-p与后面的密码之间不能有空格。如果未指定密码选项,则默认情况下不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。参见 Section 8.1.2.1, “End-User Guidelines for Password Security”。
要明确指定没有密码,并且 mysql 不应提示输入密码,使用
--skip-password选项。 -
用于连接到服务器的 MySQL 帐户的多因素认证因子 1 的密码。密码值是可选的。如果未给出,则mysql会提示输入密码。如果给出,则
--password1=和后面的密码之间不能有空格。如果未指定密码选项,则默认情况下不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。请参阅第 8.1.2.1 节,“密码安全的最终用户指南”。
要明确指定没有密码,并且mysql不应提示密码,请使用
--skip-password1选项。--password1和--password是同义词,--skip-password1和--skip-password也是同义词。 -
用于连接到服务器的 MySQL 帐户的多因素认证因子 2 的密码。此选项的语义与
--password1的语义类似;有关详细信息,请参阅该选项的描述。 -
用于连接到服务器的 MySQL 帐户的多因素认证因子 3 的密码。此选项的语义与
--password1的语义类似;有关详细信息,请参阅该选项的描述。 -
--pipe,-W命令行格式 --pipe类型 字符串 在 Windows 上,使用命名管道连接到服务器。此选项仅在服务器启动时启用了支持命名管道连接的
named_pipe系统变量时才适用。此外,进行连接的用户必须是由named_pipe_full_access_group系统变量指定的 Windows 组的成员。 -
--plugin-authentication-kerberos-client-mode=*value*命令行格式 --plugin-authentication-kerberos-client-mode引入版本 8.0.32 类型 字符串 默认值 SSPI有效值 GSSAPI``SSPI在 Windows 上,
authentication_kerberos_client认证插件支持此插件选项。它提供了两个客户端用户可以在运行时设置的可能值:SSPI和GSSAPI。客户端端插件选项的默认值使用了 Security Support Provider Interface(SSPI),它能够从 Windows 内存缓存中获取凭据。另外,客户端用户可以选择支持通过 Windows 上的 MIT Kerberos 库使用 Generic Security Service Application Program Interface(GSSAPI)的模式。GSSAPI 能够获取先前使用kinit命令生成的缓存凭据。
更多信息,请参见在 GSSAPI 模式下的 Windows 客户端命令。
-
--plugin-dir=*dir_name*命令行格式 --plugin-dir=dir_name类型 目录名称 查找插件的目录。如果使用
--default-auth选项指定了一个认证插件但mysql找不到它,请指定此选项。参见第 8.2.17 节,“可插拔认证”。 -
--port=*port_num*,-P *port_num*命令行格式 --port=port_num类型 数字 默认值 3306用于 TCP/IP 连接的端口号。
-
--print-defaults命令行格式 --print-defaults打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--prompt=*format_str*命令行格式 --prompt=format_str类型 字符串 默认值 mysql>将提示设置为指定的格式。默认值为
mysql>。提示可以包含的特殊序列在第 6.5.1.2 节,“mysql 客户端命令”中描述。 -
--protocol={TCP|SOCKET|PIPE|MEMORY}命令行格式 --protocol=type类型 字符串 默认值 [见文本]有效值 TCP``SOCKET``PIPE``MEMORY用于连接到服务器的传输协议。当其他连接参数通常导致使用不希望使用的协议时,这很有用。有关允许值的详细信息,请参见第 6.2.7 节,“连接传输协议”。
-
--quick,-q命令行格式 --quick不要缓存每个查询结果,按接收顺序打印每行。如果输出被暂停,这可能会减慢服务器速度。使用此选项,mysql 不会使用历史文件。
默认情况下,mysql 在生成任何输出之前会获取所有结果行;在存储这些行时,它会从每一列的实际值中依次计算出最大列长度。在打印输出时,它会使用这个最大值来格式化输出。当指定
--quick时,mysql 在开始之前没有行来计算长度,因此使用最大长度。在下面的示例中,表t1有一个类型为BIGINT- INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT") 的单列,包含 4 行。默认输出宽度为 9 个字符;这个宽度等于返回行中任何列值中的最大字符数(5),再加上用作填充的空格和用作列分隔符的|字符,每个都是 2 个字符)。使用--quick选项时的输出宽度为 25 个字符;这等于表示-9223372036854775808所需的字符数,这是可以存储在(有符号的)BIGINT列中的最长可能值,或者是 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 | +----------------------+ -
--raw,-r命令行格式 --raw对于表格输出,围绕列的“框”使得一个列值可以与另一个区分开。对于非表格输出(例如在批处理模式下生成的输出或给出
--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) \ -
--reconnect命令行格式 --reconnect禁用者 skip-reconnect如果与服务器的连接丢失,自动尝试重新连接。每次连接丢失时都会尝试重新连接一次。要抑制重新连接行为,请使用
--skip-reconnect。 -
--safe-updates,--i-am-a-dummy,-U命令行格式 --safe-updates``--i-am-a-dummy类型 布尔值 默认值 FALSE如果启用此选项,则不使用
WHERE子句中的键或LIMIT子句的UPDATE和DELETE语句将产生错误。此外,对于产生(或估计产生)非常大结果集的SELECT语句也会施加限制。如果在选项文件中设置了此选项,则可以在命令行上使用--skip-safe-updates来覆盖它。有关此选项的更多信息,请参见 使用安全更新模式 (--safe-updates)")。 -
--select-limit=*value*命令行格式 --select-limit=value类型 数值 默认值 1000当使用
--safe-updates时,SELECT语句的自动限制。(默认值为 1,000)。 -
--server-public-key-path=*file_name*命令行格式 --server-public-key-path=file_name类型 文件名 PEM 格式文件路径名,其中包含服务器所需的客户端端公钥的副本,用于 RSA 密钥对密码交换。此选项适用于使用
sha256_password或caching_sha2_password认证插件进行身份验证的客户端。对于不使用这些插件进行身份验证的帐户,此选项将被忽略。如果不使用基于 RSA 的密码交换,例如客户端使用安全连接连接到服务器时,此选项也将被忽略。如果给定
--server-public-key-path=*file_name*并指定有效的公钥文件,则优先于--get-server-public-key。对于
sha256_password,此选项仅在使用 OpenSSL 构建 MySQL 时适用。有关
sha256_password和caching_sha2_password插件的信息,请参见 第 8.4.1.3 节,“SHA-256 可插拔认证” 和 第 8.4.1.2 节,“缓存 SHA-2 可插拔认证”。 -
--shared-memory-base-name=*name*命令行格式 --shared-memory-base-name=name特定平台 Windows 在 Windows 上,用于使用共享内存进行到本地服务器的连接的共享内存名称。默认值为
MYSQL。共享内存名称区分大小写。只有在服务器启动时启用了支持共享内存连接的
shared_memory系统变量时,此选项才适用。 -
--show-warnings命令行格式 --show-warnings导致在每个语句后显示警告(如果有)。此选项适用于交互和批处理模式。
-
--sigint-ignore命令行格式 --sigint-ignore忽略
SIGINT信号(通常是键入Control+C的结果)。如果没有此选项,键入Control+C会中断当前语句(如果有的话),否则会取消任何部分输入行。
-
--silent,-s命令行格式 --silent静默模式。产生较少输出。可以多次使用此选项以产生越来越少的输出。
此选项会导致非表格输出格式和特殊字符的转义。可以通过使用原始模式来禁用转义;请参阅
--raw选项的描述。 -
--skip-column-names,-N命令行格式 --skip-column-names不在结果中写入列名。使用此选项会导致输出右对齐,如下所示:
$> echo "SELECT * FROM t1" | mysql -t test +-------+ | c1 | +-------+ | a,c,d | | c | +-------+ $> echo "SELECT * FROM t1" | ./mysql -uroot -Nt test +-------+ | a,c,d | | c | +-------+ -
--skip-line-numbers,-L命令行格式 --skip-line-numbers不为错误写入行号。在想要比较包含错误消息的结果文件时很有用。
-
--socket=*路径*,-S *路径*命令行格式 --socket={file_name|pipe_name}类型 字符串 对于连接到
localhost的连接,要使用的 Unix 套接字文件,或者在 Windows 上,要使用的命名管道的名称。在 Windows 上,只有在服务器启动时启用了支持命名管道连接的
named_pipe系统变量时,此选项才适用。此外,进行连接的用户必须是由named_pipe_full_access_group系统变量指定的 Windows 组的成员。 -
--ssl*以
--ssl开头的选项指定是否使用加密连接到服务器,并指示在哪里找到 SSL 密钥和证书。请参阅加密连接的命令选项。 -
--ssl-fips-mode={OFF|ON|STRICT}命令行格式 --ssl-fips-mode={OFF|ON|STRICT}已弃用 8.0.34 类型 枚举 默认值 OFF有效值 OFF``ON``STRICT控制是否在客户端端启用 FIPS 模式。
--ssl-fips-mode选项与其他--ssl-*xxx*选项不同,它不用于建立加密连接,而是用于影响允许哪些加密操作。请参阅 第 8.8 节,“FIPS 支持”。允许使用这些
--ssl-fips-mode值:-
OFF: 禁用 FIPS 模式。 -
ON: 启用 FIPS 模式。 -
STRICT: 启用“严格” FIPS 模式。
注意
如果 OpenSSL FIPS 对象模块不可用,则
--ssl-fips-mode的唯一允许值是OFF。在这种情况下,将--ssl-fips-mode设置为ON或STRICT会导致客户端在启动时产生警告并在非 FIPS 模式下运行。从 MySQL 8.0.34 开始,此选项已弃用。预计在将来的 MySQL 版本中将其移除。
-
-
--syslog,-j命令行格式 --syslog此选项导致 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;'更多信息,请参阅 第 6.5.1.3 节,“mysql 客户端日志记录”。
-
--table,-t命令行格式 --table以表格格式显示输出。这是交互使用的默认设置,但也可用于在批处理模式下生成表格输出。
-
--tee=*file_name*命令行格式 --tee=file_name类型 文件名 将输出的副本附加到给定文件。此选项仅在交互模式下有效。第 6.5.1.2 节,“mysql 客户端命令”,进一步讨论了 tee 文件。
-
--tls-ciphersuites=*ciphersuite_list*命令行格式 --tls-ciphersuites=ciphersuite_list引入 8.0.16 类型 字符串 用于使用 TLSv1.3 的加密连接的可接受密码套件。该值是一个或多个冒号分隔的密码套件名称列表。可以为此选项命名的密码套件取决于用于编译 MySQL 的 SSL 库。有关详细信息,请参见第 8.3.2 节,“加密连接 TLS 协议和密码”。
此选项在 MySQL 8.0.16 中添加。
-
--tls-version=*protocol_list*命令行格式 --tls-version=protocol_list类型 字符串 默认值(≥ 8.0.16) TLSv1,TLSv1.1,TLSv1.2,TLSv1.3(OpenSSL 1.1.1 或更高版本)TLSv1,TLSv1.1,TLSv1.2(否则)默认值(≤ 8.0.15) TLSv1,TLSv1.1,TLSv1.2用于加密连接的可接受 TLS 协议。该值是一个或多个逗号分隔的协议名称列表。可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库。有关详细信息,请参见第 8.3.2 节,“加密连接 TLS 协议和密码”。
-
--unbuffered,-n命令行格式 --unbuffered在每个查询后刷新缓冲区。
-
--user=*user_name*,-u *user_name*命令行格式 --user=user_name类型 字符串 用于连接到服务器的 MySQL 帐户的用户名。
-
--verbose,-v命令行格式 --verbose冗长模式。产生关于程序操作的更多输出。可以多次使用此选项以产生更多输出。(例如,
-v -v -v即使在批处理模式下也会产生表格输出格式。) -
--version,-V命令行格式 --version显示版本信息并退出。
-
--vertical,-E命令行格式 --vertical将查询输出行垂直显示(每列值一行)。如果不使用此选项,可以通过在语句末尾加上
\G来指定单个语句的垂直输出。 -
--wait,-w命令行格式 --wait如果无法建立连接,则等待并重试,而不是中止。
-
--xml,-X命令行格式 --xml生成 XML 输出。
<field name="*column_name*">NULL</field>当使用
--xml与 mysql 一起使用时,输出与 mysqldump--xml的匹配。详情请参见 第 6.5.4 节,“mysqldump — 数据库备份程序”。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-compression-level=*level*命令行格式 --zstd-compression-level=#引入版本 8.0.18 类型 整数 用于使用
zstd压缩算法连接到服务器的连接的压缩级别。允许的级别为 1 到 22,较大的值表示较高级别的压缩。默认的zstd压缩级别为 3。压缩级别设置对不使用zstd压缩的连接没有影响。更多信息,请参见 第 6.2.8 节,“连接压缩控制”。
此选项在 MySQL 8.0.18 中添加。
6.5.1.2 mysql 客户端命令
mysql将您发出的每个 SQL 语句发送到服务器执行。还有一组mysql本身解释的命令。要查看这些命令的列表,请在mysql>提示符处键入help或\h:
mysql> help
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given
outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing
binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...)
for the next query to pick up.
ssl_session_data_print Serializes the current SSL session data to stdout
or file.
For server side help, type 'help contents'
如果使用--binary-mode选项调用mysql,除了非交互模式下的charset和delimiter命令外,所有mysql命令都被禁用(用于输入到mysql或使用source命令加载的情况)。
每个命令都有长格式和短格式。长格式不区分大小写;短格式区分大小写。长格式可以跟随可选的分号终止符,但短格式不应该。
多行/* ... */注释中不支持使用短格式命令。单行/*! ... */版本注释中可以使用短格式命令,/*+ ... */提示优化器的注释也可以使用,这些注释存储在对象定义中。如果担心优化器提示注释可能存储在对象定义中,导致重新加载时使用mysql执行这些命令,要么使用带有--binary-mode选项调用mysql,要么使用除mysql之外的重新加载客户端。
-
help [*arg*],\h [*arg*],\? [*arg*],? [*arg*]显示列出可用mysql命令的帮助消息。
如果向
help命令提供参数,mysql将其用作搜索字符串,以从 MySQL 参考手册的内容中访问服务器端帮助。更多信息,请参阅 Section 6.5.1.4, “mysql Client Server-Side Help”。 -
charset *charset_name*,\C *charset_name*更改默认字符集并发出
SET NAMES语句。如果mysql以启用自动重新连接的方式运行(不建议),因为指定的字符集用于重新连接,所以客户端和服务器上的字符集保持同步。 -
clear,\c清除当前输入。如果更改主意不执行正在输入的语句,请使用此选项。
-
connect [*db_name* [*host_name*]],\r [*db_name* [*host_name*]]重新连接到服务器。可以提供可选的数据库名称和主机名参数以指定默认数据库或运行服务器的主机。如果省略,则使用当前值。
如果
connect命令指定了主机名参数,则该主机优先于在mysql启动时指定的任何--dns-srv-name选项来指定 DNS SRV 记录。 -
delimiter *str*,\d *str*更改mysql解释为 SQL 语句之间的分隔符的字符串。默认为分号字符(
;)。分隔符字符串可以在
delimiter命令行上指定为未引用或引用的参数。引用可以使用单引号(')、双引号(")或反引号(```sql) characters. To include a quote within a quoted string, either quote the string with a different quote character or escape the quote with a backslash (\) character. Backslash should be avoided outside of quoted strings because it is the escape character for MySQL. For an unquoted argument, the delimiter is read up to the first space or end of line. For a quoted argument, the delimiter is read up to the matching quote on the line.mysql interprets instances of the delimiter string as a statement delimiter anywhere it occurs, except within quoted strings. Be careful about defining a delimiter that might occur within other words. For example, if you define the delimiter as
X, it is not possible to use the wordINDEXin statements. mysql interprets this asINDEfollowed by the delimiterX.When the delimiter recognized by mysql is set to something other than the default of
;, instances of that character are sent to the server without interpretation. However, the server itself still interprets;as a statement delimiter and processes statements accordingly. This behavior on the server side comes into play for multiple-statement execution (see Multiple Statement Execution Support), and for parsing the body of stored procedures and functions, triggers, and events (see Section 27.1, “Defining Stored Programs”).
-
edit,\eEdit the current input statement. mysql checks the values of the
EDITORandVISUALenvironment variables to determine which editor to use. The default editor is vi if neither variable is set.The
editcommand works only in Unix. -
ego,\GSend the current statement to the server to be executed and display the result using vertical format.
-
exit,\qExit mysql.
-
go,\gSend the current statement to the server to be executed.
-
nopager,\nDisable output paging. See the description for
pager.The
nopagercommand works only in Unix. -
notee,\tDisable output copying to the tee file. See the description for
tee. -
nowarning,\wDisable display of warnings after each statement.
-
pager [*command*],\P [*command*]Enable output paging. By using the
--pageroption when you invoke mysql, it is possible to browse or search query results in interactive mode with Unix programs such as less, more, or any other similar program. If you specify no value for the option, mysql checks the value of thePAGERenvironment variable and sets the pager to that. Pager functionality works only in interactive mode.Output paging can be enabled interactively with the
pagercommand and disabled withnopager. The command takes an optional argument; if given, the paging program is set to that. With no argument, the pager is set to the pager that was set on the command line, orstdoutif no pager was specified.Output paging works only in Unix because it uses the
popen()function, which does not exist on Windows. For Windows, theteeoption can be used instead to save query output, although it is not as convenient aspagerfor browsing output in some situations. -
print,\pPrint the current input statement without executing it.
-
prompt [*str*],\R [*str*]Reconfigure the mysql prompt to the given string. The special character sequences that can be used in the prompt are described later in this section.
If you specify the
promptcommand with no argument, mysql resets the prompt to the default ofmysql>. -
query_attributes *name* *value* [*name* *value* ...]Define query attributes that apply to the next query sent to the server. For discussion of the purpose and use of query attributes, see Section 11.6, “Query Attributes”.
The
query_attributescommand follows these rules:-
The format and quoting rules for attribute names and values are the same as for the
delimitercommand. -
The command permits up to 32 attribute name/value pairs. Names and values may be up to 1024 characters long. If a name is given without a value, an error occurs.
-
If multiple
query_attributescommands are issued prior to query execution, only the last command applies. After sending the query, mysql clears the attribute set. -
If multiple attributes are defined with the same name, attempts to retrieve the attribute value have an undefined result.
-
An attribute defined with an empty name cannot be retrieved by name.
-
If a reconnect occurs while mysql executes the query, mysql restores the attributes after reconnecting so the query can be executed again with the same attributes.
-
-
quit,\qExit mysql.
-
rehash,\#Rebuild the completion hash that enables database, table, and column name completion while you are entering statements. (See the description for the
--auto-rehashoption.) -
resetconnection,\xReset the connection to clear the session state. This includes clearing any current query attributes defined using the
query_attributescommand.Resetting a connection has effects similar to
mysql_change_user()or an auto-reconnect except that the connection is not closed and reopened, and re-authentication is not done. See mysql_change_user(), and Automatic Reconnection Control.This example shows how
resetconnectionclears a value maintained in the session state:mysql> SELECT LAST_INSERT_ID(3); +-------------------+ | LAST_INSERT_ID(3) | | --- | +-------------------+ | 3 | | --- | +-------------------+ mysql> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | | --- | +------------------+ | 3 | | --- | +------------------+ mysql> resetconnection; mysql> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | | --- | +------------------+ | 0 | | --- | +------------------+ ```sql -
source *file_name*,\. *file_name*Read the named file and executes the statements contained therein. On Windows, specify path name separators as
/or\\.Quote characters are taken as part of the file name itself. For best results, the name should not include space characters.
-
ssl_session_data_print [*file_name*]Fetches, serializes, and optionally stores the session data of a successful connection. The optional file name and arguments may be given to specify the file to store serialized session data. If omitted, the session data is printed to
stdout.If the MySQL session is configured for reuse, session data from the file is deserialized and supplied to the
connectcommand to reconnect. When the session is reused successfully, thestatuscommand contains a row showingSSL session reused: truewhile the client remains reconnected to the server. -
status,\sProvide status information about the connection and the server you are using. If you are running with
--safe-updatesenabled,statusalso prints the values for the mysql variables that affect your queries. -
system *command*,\! *command*Execute the given command using your default command interpreter.
Prior to MySQL 8.0.19, the
systemcommand works only in Unix. As of 8.0.19, it also works on Windows. -
tee [*file_name*],\T [*file_name*]By using the
--teeoption when you invoke mysql, you can log statements and their output. All the data displayed on the screen is appended into a given file. This can be very useful for debugging purposes also. mysql flushes results to the file after each statement, just before it prints its next prompt. Tee functionality works only in interactive mode.You can enable this feature interactively with the
teecommand. Without a parameter, the previous file is used. Theteefile can be disabled with thenoteecommand. Executingteeagain re-enables logging. -
use *db_name*,\u *db_name*Use
db_nameas the default database. -
warnings,\WEnable display of warnings after each statement (if there are any).
Here are a few tips about the pager command:
-
You can use it to write to a file and the results go only to the file:
mysql> pager cat > /tmp/log.txt ```sql You can also pass any options for the program that you want to use as your pager:mysql> pager less -n -i -S
-
In the preceding example, note the
-Soption. You may find it very useful for browsing wide query results. Sometimes a very wide result set is difficult to read on the screen. The-Soption to less can make the result set much more readable because you can scroll it horizontally using the left-arrow and right-arrow keys. You can also use-Sinteractively within less to switch the horizontal-browse mode on and off. For more information, read the less manual page:人少 ```sql -
The
-Fand-Xoptions may be used with less to cause it to exit if output fits on one screen, which is convenient when no scrolling is necessary:mysql> pager less -n -i -S -F -X ```sql -
You can specify very complex pager commands for handling query output:
mysql> pager cat | tee /dr1/tmp/res.txt \ | tee /dr2/tmp/res2.txt | less -n -i -S ```sql In this example, the command would send query results to two files in two different directories on two different file systems mounted on `/dr1` and `/dr2`, yet still display the results onscreen using **less**.
You can also combine the tee and pager functions. Have a tee file enabled and pager set to less, and you are able to browse the results using the less program and still have everything appended into a file the same time. The difference between the Unix tee used with the pager command and the mysql built-in tee command is that the built-in tee works even if you do not have the Unix tee available. The built-in tee also logs everything that is printed on the screen, whereas the Unix tee used with pager does not log quite that much. Additionally, tee file logging can be turned on and off interactively from within mysql. This is useful when you want to log some queries to a file, but not others.
The prompt command reconfigures the default mysql> prompt. The string for defining the prompt can contain the following special sequences.
| Option | Description |
| \C | The current connection identifier |
| \c | A counter that increments for each statement you issue |
| \D | The full current date |
| \d | The default database |
| \h | The server host |
| \l | The current delimiter |
| \m | Minutes of the current time |
| \n | A newline character |
| \O | The current month in three-letter format (Jan, Feb, …) |
| \o | The current month in numeric format |
| \P | am/pm |
| \p | The current TCP/IP port or socket file |
| \R | The current time, in 24-hour military time (0–23) |
| \r | The current time, standard 12-hour time (1–12) |
| \S | Semicolon |
| \s | Seconds of the current time |
| \T | Print an asterisk (*) if the current session is inside a transaction block (from MySQL 8.0.28) |
| \t | A tab character |
| \U | Your full *user_name*@*host_name* account name |
| \u | Your user name |
| \v | The server version |
| \w | The current day of the week in three-letter format (Mon, Tue, …) |
| \Y | The current year, four digits |
| \y | The current year, two digits |
| \_ | A space |
| \ | A space (a space follows the backslash) |
| \' | Single quote |
| \" | Double quote |
| \\ | A literal \ backslash character |
| \*x* | x, for any “x” not listed above |
| Option | Description |
You can set the prompt in several ways:
-
Use an environment variable. You can set the
MYSQL_PS1environment variable to a prompt string. For example:export MYSQL_PS1="(\u@\h) [\d]> " ```sql -
Use a command-line option. You can set the
--promptoption on the command line to mysql. For example:$> mysql --prompt="(\u@\h) [\d]> " (user@host) [database]> ```sql -
Use an option file. You can set the
promptoption in the[mysql]group of any MySQL option file, such as/etc/my.cnfor the.my.cnffile in your home directory. For example:[mysql] prompt=(\\u@\\h) [\\d]>\\_ ```sql In this example, note that the backslashes are doubled. If you set the prompt using the `prompt` option in an option file, it is advisable to double the backslashes when using the special prompt options. There is some overlap in the set of permissible prompt options and the set of special escape sequences that are recognized in option files. (The rules for escape sequences in option files are listed in Section 6.2.2.2, “Using Option Files”.) The overlap may cause you problems if you use single backslashes. For example, `\s` is interpreted as a space rather than as the current seconds value. The following example shows how to define a prompt within an option file to include the current time in `*`hh:mm:ss`*>` format:[mysql]
prompt="\r:\m:\s> "
-
Set the prompt interactively. You can change your prompt interactively by using the
prompt(or\R) command. For example:mysql> prompt (\u@\h) [\d]>\_ PROMPT 设置为'(\u@\h) [\d]>\_' (*user*@*host*) [*database*]> (*user*@*host*) [*database*]> prompt 返回到默认的 mysql 提示> mysql>