MySQL8 中文参考(十二)
6.5.5 mysqlimport — A Data Import Program
mysqlimport客户端提供了一个命令行界面,用于LOAD DATA SQL 语句。大多数mysqlimport的选项直接对应于LOAD DATA语法的子句。请参阅 Section 15.2.9, “LOAD DATA Statement”。
调用mysqlimport的方法如下:
mysqlimport [*options*] *db_name* *textfile1* [*textfile2* ...]
对于命令行中命名的每个文本文件,mysqlimport会剥去文件名的任何扩展名,并使用结果确定将文件内容导入的表的名称。例如,名为patient.txt、patient.text和patient的文件都将导入到名为patient的表中。
mysqlimport支持以下选项,可以在命令行或选项文件的[mysqlimport]和[client]组中指定。有关 MySQL 程序使用的选项文件的信息,请参见 Section 6.2.2.2, “Using Option Files”。
表 6.16 mysqlimport 选项
| 选项名称 | 描述 | 引入 | 废弃 |
|---|---|---|---|
| --bind-address | 使用指定的网络接口连接到 MySQL 服务器 | ||
| --character-sets-dir | 字符集所在目录 | ||
| --columns | 此选项以逗号分隔的列名列表作为其值 | ||
| --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 | 选项组后缀值 | ||
| --delete | 导入文本文件之前清空表 | ||
| --enable-cleartext-plugin | 启用明文认证插件 | ||
| --fields-enclosed-by | 此选项与 LOAD DATA 的相应子句具有相同的含义 | ||
| --fields-escaped-by | 此选项与 LOAD DATA 的相应子句具有相同的含义 | ||
| --fields-optionally-enclosed-by | 此选项与 LOAD DATA 的相应子句具有相同的含义 | ||
| --fields-terminated-by | 此选项与 LOAD DATA 的相应子句具有相同的含义 | ||
| --force | 即使发生 SQL 错误也继续 | ||
| --get-server-public-key | 从服务器请求 RSA 公钥 | ||
| --help | 显示帮助信息并退出 | ||
| --host | MySQL 服务器所在的主机 | ||
| --ignore | 参见--replace 选项的描述 | ||
| --ignore-lines | 忽略数据文件的前 N 行 | ||
| --lines-terminated-by | 此选项与 LOAD DATA 的相应子句具有相同的含义 | ||
| --local | 从客户端主机本地读取输入文件 | ||
| --lock-tables | 在处理任何文本文件之前锁定所有表以进行写入 | ||
| --login-path | 从.mylogin.cnf 中读取登录路径选项 | ||
| --low-priority | 在加载表时使用 LOW_PRIORITY | ||
| --no-defaults | 不读取任何选项文件 | ||
| --password | 连接到服务器时要使用的密码 | ||
| --password1 | 连接到服务器时要使用的第一个多因素认证密码 | 8.0.27 | |
| --password2 | 连接到服务器时要使用的第二个多因素身份验证密码 | 8.0.27 | |
| --password3 | 连接到服务器时要使用的第三个多因素身份验证密码 | 8.0.27 | |
| --pipe | 使用命名管道连接到服务器(仅限 Windows) | ||
| --plugin-dir | 安装插件的目录 | ||
| --port | 连接的 TCP/IP 端口号 | ||
| --print-defaults | 打印默认选项 | ||
| --protocol | 要使用的传输协议 | ||
| --replace | --replace 和 --ignore 选项控制对重复现有行的处理 | ||
| --server-public-key-path | 包含 RSA 公钥的文件路径名 | ||
| --shared-memory-base-name | 共享内存连接的共享内存名称(仅限 Windows) | ||
| --silent | 仅在发生错误时产生输出 | ||
| --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 协议 | ||
| --use-threads | 并行文件加载的线程数 | ||
| --user | 连接到服务器时要使用的 MySQL 用户名 | ||
| --verbose | 详细模式 | ||
| --version | 显示版本信息并退出 | ||
| --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=path类型 字符串 默认值 [none]安装字符集的目录。参见 第 12.15 节,“字符集配置”。
-
--columns=*column_list*,-c *column_list*命令行格式 --columns=column_list此选项以逗号分隔的列名列表作为其值。列名的顺序表示如何将数据文件列与表列匹配。
-
--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[=debug_options]类型 字符串 默认值 d:t:o写入调试日志。典型的
debug_options字符串是d:t:o,*file_name*。默认值为d:t:o。只有在使用
WITH_DEBUG构建 MySQL 时才可用。由 Oracle 提供的 MySQL 发行版二进制文件 不 使用此选项构建。 -
--debug-check命令行格式 --debug-check类型 布尔值 默认值 FALSE在程序退出时打印一些调试信息。
只有在使用
WITH_DEBUG构建 MySQL 时才可用。由 Oracle 提供的 MySQL 发行版二进制文件 不 使用此选项构建。 -
--debug-info命令行格式 --debug-info类型 布尔值 默认值 FALSE在程序退出时打印调试信息和内存和 CPU 使用统计信息。
只有在使用
WITH_DEBUG构建 MySQL 时才可用。由 Oracle 提供的 MySQL 发行版二进制文件 不 使用此选项构建。 -
--default-character-set=*charset_name*命令行格式 --default-character-set=charset_name类型 字符串 将
charset_name用作默认字符集。请参见 第 12.15 节,“字符集配置”。 -
--default-auth=*plugin*命令行格式 --default-auth=plugin类型 字符串 关于使用哪种客户端端身份验证插件的提示。请参见 第 8.2.17 节,“可插拔认证”。
-
--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*的组。例如,mysqlimport通常会读取[client]和[mysqlimport]组。如果给定此选项作为--defaults-group-suffix=_other,mysqlimport还会读取[client_other]和[mysqlimport_other]组。有关此选项文件和其他选项文件选项的附加信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--delete,-D命令行格式 --delete清空表格后再导入文本文件。
-
--enable-cleartext-plugin命令行格式 --enable-cleartext-plugin类型 布尔值 默认值 FALSE启用
mysql_clear_password明文认证插件。(参见第 8.4.1.4 节,“客户端明文插件认证”。) -
--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...命令行格式 --fields-terminated-by=string类型 字符串 命令行格式 --fields-enclosed-by=string类型 字符串 命令行格式 --fields-optionally-enclosed-by=string类型 字符串 命令行格式 --fields-escaped-by类型 字符串 这些选项的含义与
LOAD DATA的相应子句相同。请参阅第 15.2.9 节,“LOAD DATA Statement”。 -
--force,-f命令行格式 --force忽略错误。例如,如果文本文件的表不存在,则继续处理任何剩余文件。如果表不存在,则没有
--force,mysqlimport会退出。 -
--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=host_name类型 字符串 默认值 localhost将数据导入到给定主机上的 MySQL 服务器。默认主机是
localhost。 -
--ignore,-i命令行格式 --ignore请参阅
--replace选项的描述。 -
--ignore-lines=*N*命令行格式 --ignore-lines=#类型 数字 忽略数据文件的第一个*
N*行。 -
--lines-terminated-by=...命令行格式 --lines-terminated-by=string类型 字符串 此选项与
LOAD DATA的相应子句具有相同的含义。例如,要导入以回车/换行对终止的 Windows 文件,请使用--lines-terminated-by="\r\n"。(根据您的命令解释器的转义约定,您可能需要双反斜杠。)请参见第 15.2.9 节,“LOAD DATA 语句”。 -
--local,-L命令行格式 --local类型 布尔值 默认值 FALSE默认情况下,文件由服务器在服务器主机上读取。使用此选项,mysqlimport在客户端主机上本地读取输入文件。
在mysqlimport中成功使用
LOCAL加载操作还需要服务器允许本地加载;请参见第 8.1.6 节,“LOAD DATA LOCAL 的安全注意事项” -
--lock-tables,-l命令行格式 --lock-tables在处理任何文本文件之前,将所有表锁定为写入状态。这确保所有表在服务器上同步。
-
--login-path=*name*命令行格式 --login-path=name类型 字符串 从
.mylogin.cnf登录路径文件中的命名登录路径读取选项。 “登录路径”是一个包含指定要连接到哪个 MySQL 服务器以及要作为哪个帐户进行身份验证的选项的选项组。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。请参见第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”。有关此选项文件和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--low-priority命令行格式 --low-priority在加载表时使用
LOW_PRIORITY。这仅影响仅使用表级锁定的存储引擎(如MyISAM,MEMORY和MERGE)。 -
--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 节,“影响选项文件处理的命令行选项”。
-
--password[=*password*],-p[*password*]命令行格式 --password[=password]类型 字符串 用于连接到服务器的 MySQL 帐户的密码。密码值是可选的。如果未提供,mysqlimport会提示输入密码。如果提供,
--password=或-p后面必须没有空格。如果未指定密码选项,则默认情况下不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。参见第 8.1.2.1 节,“密码安全的最终用户指南”。
要明确指定没有密码,并且mysqlimport不应提示输入密码,请使用
--skip-password选项。 -
用于连接到服务器的 MySQL 帐户的多因素认证因素 1 的密码。密码值是可选的。如果未提供,mysqlimport会提示输入密码。如果提供,
--password1=后面必须没有空格。如果未指定密码选项,则默认情况下不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。参见第 8.1.2.1 节,“密码安全的最终用户指南”。
要明确指定没有密码,并且mysqlimport不应提示输入密码,请使用
--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-dir=*dir_name*命令行格式 --plugin-dir=dir_name类型 目录名称 查找插件的目录。如果使用
--default-auth选项指定身份验证插件但mysqlimport找不到它,则指定此选项。参见第 8.2.17 节,“可插拔认证”。 -
--port=*port_num*,-P *port_num*命令行格式 --port=port_num类型 数字 默认值 3306对于 TCP/IP 连接,要使用的端口号。
-
--print-defaults命令行格式 --print-defaults打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}命令行格式 --protocol=type类型 字符串 默认值 [查看文本]有效值 TCP``SOCKET``PIPE``MEMORY用于连接到服务器的传输协议。当其他连接参数通常导致使用不希望使用的协议时,此选项很有用。有关允许的值的详细信息,请参见第 6.2.7 节,“连接传输协议”。
-
--replace,-r命令行格式 --replace--replace和--ignore选项控制处理具有唯一键值的输入行重复现有行的方式。如果指定--replace,则新行将替换具有相同唯一键值的现有行。如果指定--ignore,则将跳过具有唯一键值上存在的现有行的输入行。如果两个选项都未指定,则在发现重复键值时会发生错误,并且将忽略文本文件的其余部分。 -
--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系统变量时才适用。 -
--silent,-s命令行格式 --silent静默模式。仅在发生错误时产生输出。
-
--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 对象模块不可用,则
--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 库。有关详细信息,请参见第 8.3.2 节,“加密连接 TLS 协议和密码”。
-
--user=*user_name*,-u *user_name*命令行格式 --user=user_name,类型 字符串 用于连接到服务器的 MySQL 帐户的用户名。
-
--use-threads=*N*命令行格式 --use-threads=#类型 数字 并行加载文件,使用*
N*个线程。 -
--verbose,-v命令行格式 --verbose详细模式。打印程序执行的更多信息。
-
--version,-V命令行格式 --version显示版本信息并退出。
-
--zstd-compression-level=*level*命令行格式 --zstd-compression-level=#引入版本 8.0.18 类型 整数 用于使用
zstd压缩算法连接到服务器的连接的压缩级别。允许的级别为 1 到 22,较大的值表示较高级别的压缩。默认的zstd压缩级别为 3。压缩级别设置对不使用zstd压缩的连接没有影响。更多信息,请参见第 6.2.8 节,“连接压缩控制”。
此选项是在 MySQL 8.0.18 中添加的。
这是一个演示如何使用mysqlimport的示例会话:
$> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
$> ed
a
100 Max Sydow
101 Count Dracula
.
w imptest.txt
32
q
$> od -c imptest.txt
0000000 1 0 0 \t M a x S y d o w \n 1 0
0000020 1 \t C o u n t D r a c u l a \n
0000040
$> mysqlimport --local test imptest.txt
test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
$> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id | n |
+------+---------------+
| 100 | Max Sydow |
| 101 | Count Dracula |
+------+---------------+
6.5.6 mysqlpump — 一个数据库备份程序
-
mysqlpump 调用语法
-
mysqlpump 选项摘要
-
mysqlpump 选项描述
-
mysqlpump 对象选择
-
mysqlpump 并行处理
-
mysqlpump 限制
mysqlpump客户端实用程序执行逻辑备份,生成一组可以执行的 SQL 语句,以重现原始数据库对象定义和表数据。它为备份或传输到另一个 SQL 服务器转储一个或多个 MySQL 数据库。
注意
mysqlpump在 MySQL 8.0.34 中已弃用;预计将在未来的 MySQL 版本中删除。您可以使用 MySQL 程序,如mysqldump和 MySQL Shell 来执行逻辑备份、转储数据库和类似任务。
提示
考虑使用 MySQL Shell 转储实用程序,提供多线程并行转储、文件压缩和进度信息显示,以及云功能,如 Oracle Cloud Infrastructure Object Storage 流式传输和 MySQL HeatWave Service 兼容性检查和修改。转储可以轻松导入到 MySQL 服务器实例或 MySQL HeatWave Service DB 系统中,使用 MySQL Shell 加载转储实用程序。MySQL Shell 的安装说明可以在这里找到。
mysqlpump的功能包括:
-
并行处理数据库和数据库内的对象,以加快转储过程
-
更好地控制要转储的数据库和数据库对象(表、存储过程、用户帐户)
-
转储用户帐户作为帐户管理语句(
CREATE USER,GRANT),而不是作为插入到mysql系统数据库中 -
创建压缩输出的能力
-
进度指示器(值为估计值)
-
对于通过在插入行后添加索引来加快
InnoDB表的辅助索引创建的转储文件重新加载
注意
mysqlpump 使用了 MySQL 5.7 中引入的功能,因此假定与 MySQL 5.7 或更高版本一起使用。
mysqlpump 至少需要对被转储表具有 SELECT 权限,对被转储视图具有 SHOW VIEW 权限,对被转储触发器具有 TRIGGER 权限,如果未使用 --single-transaction 选项,则需要 LOCK TABLES 权限。需要对 mysql 系统数据库具有 SELECT 权限以转储用户定义。某些选项可能需要其他权限,如选项描述中所述。
要重新加载转储文件,您必须具有执行其中包含的语句所需的权限,例如这些语句创建的对象所需的适当 CREATE 权限。
注意
在 Windows 上使用 PowerShell 进行输出重定向创建的转储文件具有 UTF-16 编码:
mysqlpump [options] > dump.sql
但是,不允许使用 UTF-16 作为连接字符集(请参阅 第 12.4 节,“连接字符集和校对规则”),因此无法正确加载转储文件。要解决此问题,请使用 --result-file 选项,以 ASCII 格式创建输出:
mysqlpump [options] --result-file=dump.sql
mysqlpump 调用语法
默认情况下,mysqlpump 转储所有数据库(在 mysqlpump 限制 中有特定例外)。要明确指定此行为,请使用 --all-databases 选项:
mysqlpump --all-databases
要转储单个数据库或该数据库中的某些表,请在命令行上命名数据库,可选地跟随表名:
mysqlpump *db_name*
mysqlpump *db_name tbl_name1 tbl_name2 ...*
要将所有名称参数视为数据库名称,请使用 --databases 选项:
mysqlpump --databases *db_name1 db_name2* ...
默认情况下,mysqlpump 不会转储用户帐户定义,即使您转储包含授权表的 mysql 系统数据库。要以逻辑定义的形式转储授权表内容,如 CREATE USER 和 GRANT 语句,使用 --users 选项并禁止所有数据库转储:
mysqlpump --exclude-databases=% --users
在上述命令中,% 是一个通配符,用于匹配所有数据库名称以供 --exclude-databases 选项使用。
mysqlpump 支持几个选项,用于包括或排除数据库、表、存储程序和用户定义。请参阅 mysqlpump 对象选择。
要重新加载转储文件,请执行其中包含的语句。例如,使用 mysql 客户端:
mysqlpump [options] > dump.sql
mysql < dump.sql
以下讨论提供了额外的 mysqlpump 使用示例。
要查看 mysqlpump 支持的选项列表,请发出命令 mysqlpump --help。
mysqlpump 选项摘要
mysqlpump 支持以下选项,可以在命令行或选项文件的 [mysqlpump] 和 [client] 组中指定。(在 MySQL 8.0.20 之前,mysqlpump 读取 [mysql_dump] 组而不是 [mysqlpump]。从 8.0.20 开始,仍然接受 [mysql_dump] 但已被弃用。)有关 MySQL 程序使用的选项文件的信息,请参见 6.2.2.2 使用选项文件。
表 6.17 mysqlpump 选项
| 选项名称 | 描述 | 引入版本 | 废弃版本 |
|---|---|---|---|
| --add-drop-database | 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句 | ||
| --add-drop-table | 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句 | ||
| --add-drop-user | 在每个 CREATE USER 语句之前添加 DROP USER 语句 | ||
| --add-locks | 在每个表转储周围加上 LOCK TABLES 和 UNLOCK TABLES 语句 | ||
| --all-databases | 转储所有数据库 | ||
| --bind-address | 使用指定的网络接口连接到 MySQL 服务器 | ||
| --character-sets-dir | 安装字符集的目录 | ||
| --column-statistics | 写入 ANALYZE TABLE 语句以生成统计直方图 | ||
| --complete-insert | 使用包括列名的完整 INSERT 语句 | ||
| --compress | 压缩客户端和服务器之间发送的所有信息 | 8.0.18 | |
| --compress-output | 输出压缩算法 | ||
| --compression-algorithms | 允许连接到服务器的压缩算法 | 8.0.18 | |
| --databases | 将所有名称参数解释为数据库名称 | ||
| --debug | 写入调试日志 | ||
| --debug-check | 在程序退出时打印调试信息 | ||
| --debug-info | 在程序退出时打印调试信息、内存和 CPU 统计信息 | ||
| --default-auth | 要使用的认证插件 | ||
| --default-character-set | 指定默认字符集 | ||
| --default-parallelism | 并行处理的默认线程数 | ||
| --defaults-extra-file | 除了通常的选项文件外,还读取指定的选项文件 | ||
| --defaults-file | 仅读取指定的选项文件 | ||
| --defaults-group-suffix | 选项组后缀值 | ||
| --defer-table-indexes | 重新加载时,推迟索引创建,直到加载表行后 | ||
| --events | 从转储的数据库中转储事件 | ||
| --exclude-databases | 从转储中排除的数据库 | ||
| --exclude-events | 从转储中排除的事件 | ||
| --exclude-routines | 从转储中排除的例程 | ||
| --exclude-tables | 从转储中排除的表 | ||
| --exclude-triggers | 从转储中排除的触发器 | ||
| --exclude-users | 从转储中排除的用户 | ||
| --extended-insert | 使用多行 INSERT 语法 | ||
| --get-server-public-key | 从服务器请求 RSA 公钥 | ||
| --help | 显示帮助消息并退出 | ||
| --hex-blob | 使用十六进制表示法转储二进制列 | ||
| --host | MySQL 服务器所在的主机 | ||
| --include-databases | 转储中包含的数据库 | ||
| --include-events | 转储中要包含的事件 | ||
| --include-routines | 转储中要包含的例程 | ||
| --include-tables | 转储中要包含的表 | ||
| --include-triggers | 转储中要包含的触发器 | ||
| --include-users | 转储中要包含的用户 | ||
| --insert-ignore | 写入 INSERT IGNORE 而不是 INSERT 语句 | ||
| --log-error-file | 将警告和错误追加到指定文件 | ||
| --login-path | 从.mylogin.cnf 中读取登录路径选项 | ||
| --max-allowed-packet | 发送到服务器或从服务器接收的最大数据包长度 | ||
| --net-buffer-length | TCP/IP 和套接字通信的缓冲区大小 | ||
| --no-create-db | 不写入 CREATE DATABASE 语句 | ||
| --no-create-info | 不写入重新创建每个转储表的 CREATE TABLE 语句 | ||
| --no-defaults | 不读取任何选项文件 | ||
| --parallel-schemas | 指定模式处理的并行性 | ||
| --password | 连接到服务器时要使用的密码 | ||
| --password1 | 连接到服务器时要使用的第一个多因素身份验证密码 | 8.0.27 | |
| --password2 | 连接到服务器时要使用的第二个多因素身份验证密码 | 8.0.27 | |
| --password3 | 连接到服务器时要使用的第三个多因素身份验证密码 | 8.0.27 | |
| --plugin-dir | 安装插件的目录 | ||
| --port | 连接的 TCP/IP 端口号 | ||
| --print-defaults | 打印默认选项 | ||
| --protocol | 要使用的传输协议 | ||
| --replace | 写入 REPLACE 语句而不是 INSERT 语句 | ||
| --result-file | 直接输出到指定文件 | ||
| --routines | 从转储的数据库中转储存储例程(过程和函数) | ||
| --server-public-key-path | 包含 RSA 公钥的文件路径名 | ||
| --set-charset | 将 SET NAMES default_character_set 添加到输出 | ||
| --set-gtid-purged | 是否将 SET @@GLOBAL.GTID_PURGED 添加到输出 | ||
| --single-transaction | 在单个事务中转储表 | ||
| --skip-definer | 从视图和存储程序 CREATE 语句中省略 DEFINER 和 SQL SECURITY 子句 | ||
| --skip-dump-rows | 不转储表行 | ||
| --skip-generated-invisible-primary-key | 不转储生成的不可见主键的信息 | 8.0.30 | |
| --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 协议 | ||
| --triggers | 为每个转储表转储触发器 | ||
| --tz-utc | 将 SET TIME_ZONE='+00:00' 添加到转储文件 | ||
| --user | 连接到服务器时要使用的 MySQL 用户名 | ||
| --用户 | 转储用户账户 | ||
| --version | 显示版本信息并退出 | ||
| --watch-progress | 显示进度指示器 | ||
| --zstd-compression-level | 用于使用 zstd 压缩的服务器连接的压缩级别 | 8.0.18 | |
| 选项名称 | 描述 | 引入 | 废弃 |
mysqlpump 选项描述
-
--help,-?命令行格式 --help显示帮助信息并退出。
-
--add-drop-database命令行格式 --add-drop-database在每个
CREATE DATABASE语句之前写一个DROP DATABASE语句。注意
在 MySQL 8.0 中,
mysql模式被视为系统模式,不能被最终用户删除。如果与--all-databases或--databases一起使用--add-drop-database,其中要转储的模式列表包括mysql,则转储文件包含一个导致重新加载转储文件时出错的DROP DATABASEmysql`` 语句。相反,要使用
--add-drop-database,请使用--databases与要转储的模式列表,其中列表不包括mysql。 -
--add-drop-table命令行格式 --add-drop-table在每个
CREATE TABLE语句之前写一个DROP TABLE语句。 -
--add-drop-user命令行格式 --add-drop-user在每个
CREATE USER语句之前写一个DROP USER语句。 -
--add-locks命令行格式 --add-locks将每个表转储用
LOCK TABLES和UNLOCK TABLES语句包围起来。这样在重新加载转储文件时插入速度更快。参见 Section 10.2.5.1, “Optimizing INSERT Statements”。该选项与并行性不兼容,因为来自不同表的
INSERT语句可能会交错,并且在一个表的插入结束后跟随的UNLOCK TABLES可能会释放仍然存在插入的表上的锁。--add-locks和--single-transaction是互斥的。 -
--all-databases,-A命令行格式 --all-databases转储所有数据库(有一些例外情况,请参阅 mysqlpump 限制)。如果没有明确指定其他行为,则这是默认行为。
--all-databases和--databases是互斥的。注意
有关该选项与
--all-databases不兼容的信息,请参阅--add-drop-database描述。在 MySQL 8.0 之前,使用
--all-databases选项时,mysqldump 和 mysqlpump 的--routines和--events选项不需要包括存储过程和事件的定义:转储包括mysql系统数据库,因此也包括包含存储过程和事件定义的mysql.proc和mysql.event表。从 MySQL 8.0 开始,不再使用mysql.event和mysql.proc表。相应对象的定义存储在数据字典表中,但这些表不会被转储。要在使用--all-databases进行转储时包括存储过程和事件,请明确使用--routines和--events选项。 -
--bind-address=*ip_address*命令行格式 --bind-address=ip_address在具有多个网络接口的计算机上,使用此选项选择连接到 MySQL 服务器的接口。
-
--character-sets-dir=*path*命令行格式 --character-sets-dir=dir_name类型 目录名称 安装字符集的目录。请参阅 第 12.15 节,“字符集配置”。
-
--column-statistics命令行格式 --column-statistics类型 布尔 默认值 OFF在重新加载转储文件时,向输出中添加
ANALYZE TABLE语句,为转储表生成直方图统计信息。默认情况下,此选项已禁用,因为为大型表生成直方图可能需要很长时间。 -
--complete-insert命令行格式 --complete-insert编写包含列名的完整
INSERT语句。 -
--compress,-C命令行格式 --compress[={OFF|ON}]已弃用 8.0.18 类型 布尔 默认值 OFF如果可能,压缩客户端和服务器之间发送的所有信息。请参阅第 6.2.8 节,“连接压缩控制”。
从 MySQL 8.0.18 开始,此选项已被弃用。预计在未来的 MySQL 版本中将其移除。请参阅配置传统连接压缩。
-
--compress-output=*algorithm*命令行格式 --compress-output=algorithm类型 枚举 有效值 LZ4``ZLIB默认情况下,mysqlpump不会压缩输出。���选项指定使用指定算法进行输出压缩。允许的算法为
LZ4和ZLIB。要解压缩压缩的输出,您必须拥有适当的实用程序。如果系统命令lz4和openssl zlib不可用,MySQL 发行版包括可用于解压缩使用
--compress-output=LZ4和--compress-output=ZLIB选项压缩的mysqlpump输出的lz4_decompress和zlib_decompress实用程序。有关更多信息,请参阅第 6.8.1 节,“lz4_decompress — 解压缩 mysqlpump LZ4 压缩输出”和第 6.8.3 节,“zlib_decompress — 解压缩 mysqlpump ZLIB 压缩输出”。 -
--compression-algorithms=*value*命令行格式 --compression-algorithms=value引入 8.0.18 类型 设置 默认值 uncompressed有效值 zlib``zstd``uncompressed用于与服务器连接的允许压缩算法。可用算法与
protocol_compression_algorithms系统变量相同。默认值为uncompressed。查看更多信息,请参阅第 6.2.8 节,“连接压缩控制”。
此选项在 MySQL 8.0.18 中添加。
-
--databases,-B命令行格式 --databases通常,mysqlpump将命令行上的第一个名称参数视为数据库名称,后续名称视为表名称。使用此选项,它将所有名称参数视为数据库名称。在每个新数据库之前,输出中包括
CREATE DATABASE语句。--all-databases和--databases是互斥的。注意
有关该选项与
--databases不兼容的信息,请参阅--add-drop-database描述。 -
--debug[=*debug_options*],-# [*debug_options*]命令行格式 --debug[=debug_options]类型 字符串 默认值 d:t:O,/tmp/mysqlpump.trace写入调试日志。典型的*
debug_options*字符串为d:t:o,*file_name*。默认值为d:t:O,/tmp/mysqlpump.trace。仅当 MySQL 使用
WITH_DEBUG构建时才可用。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--debug-check命令行格式 --debug-check类型 布尔值 默认值 FALSE在程序退出时打印一些调试信息。
仅当 MySQL 使用
WITH_DEBUG构建时才可用。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--debug-info,-T命令行格式 --debug-info类型 布尔值 默认值 FALSE在程序退出时打印调试信息以及内存和 CPU 使用统计信息。
仅当 MySQL 使用
WITH_DEBUG构建时才可用。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--default-auth=*plugin*命令行格式 --default-auth=plugin类型 字符串 有关要使用的客户端端身份验证插件的提示。参见第 8.2.17 节,“可插拔认证”。
-
--default-character-set=*charset_name*命令行格式 --default-character-set=charset_name类型 字符串 默认值 utf8将*
charset_name*作为默认字符集。参见第 12.15 节,“字符集配置”。如果未指定字符集,mysqlpump将使用utf8mb4。 -
--default-parallelism=*N*命令行格式 --default-parallelism=N类型 整数 默认值 2每个并行处理队列的默认线程数。默认值为 2。
--parallel-schemas选项也会影响并行性,并可用于覆盖默认线程数。有关更多信息,请参见 mysqlpump 并行处理。使用
--default-parallelism=0和没有--parallel-schemas选项时,mysqlpump将作为单线程进程运行,并不创建队列。启用并行性后,不同数据库的输出可能会交错。
-
--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*的组。例如,mysqlpump通常会读取[client]和[mysqlpump]组。如果此选项给定为--defaults-group-suffix=_other,mysqlpump还会读取[client_other]和[mysqlpump_other]组。有关此选项和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--延迟表索引命令行格式 --defer-table-indexes类型 布尔 默认值 TRUE在转储输出中,延迟为每个表创建索引,直到其行加载完毕。这适用于所有存储引擎,但对于
InnoDB仅适用于二级索引。此选项默认启用;使用
--skip-defer-table-indexes来禁用它。 -
--事件命令行格式 --events类型 布尔 默认值 TRUE在输出中包含转储数据库中的事件调度器事件。事件转储需要这些数据库的
EVENT权限。使用
--事件生成的输出包含CREATE EVENT语句来创建事件。此选项默认启用;使用
--skip-events来禁用它。 -
--排除数据库=*db_list*命令行格式 --exclude-databases=db_list类型 字符串 不转储*
db_list中的数据库,其中db_list*是一个或多个逗号分隔的数据库名称列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--排除事件=*event_list*命令行格式 --exclude-events=event_list类型 字符串 不要转储*
event_list*中的数据库,这是一个包含一个或多个逗号分隔的事件名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--exclude-routines=*routine_list*命令行格式 --exclude-routines=routine_list类型 字符串 不要转储*
routine_list*中的事件,这是一个包含一个或多个逗号分隔的例程(存储过程或函数)名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--exclude-tables=*table_list*命令行格式 --exclude-tables=table_list类型 字符串 不要转储*
table_list*中的表,这是一个包含一个或多个逗号分隔的表名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--exclude-triggers=*trigger_list*命令行格式 --exclude-triggers=trigger_list类型 字符串 不要转储*
trigger_list*中的触发器,这是一个包含一个或多个逗号分隔的触发器名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--exclude-users=*user_list*命令行格式 --exclude-users=user_list类型 字符串 不要转储*
user_list*中的用户账户,这是一个包含一个或多个逗号分隔的账户名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--extended-insert=*N*命令行格式 --extended-insert=N使用包含多个
VALUES列表的多行语法编写INSERT语句。这样可以产生较小的转储文件,并在重新加载文件时加快插入速度。选项值表示每个
INSERT语句中要包含的行数。默认值为 250。值为 1 会产生每个表行一个INSERT语句。 -
--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 可插拔认证”。 -
--hex-blob命令行格式 --hex-blob使用十六进制表示法转储二进制列(例如,
'abc'变为0x616263)。受影响的数据类型包括BINARY、VARBINARY、BLOB类型、BIT、所有空间数据类型以及其他非二进制数据类型(与binary字符集一起使用时)。 -
--host=*host_name*,-h *host_name*命令行格式 --host从给定主机上的 MySQL 服务器转储数据。
-
--include-databases=*db_list*命令行格式 --include-databases=db_list类型 字符串 转储*
db_list*中的数据库,这是一个包含一个或多个逗号分隔数据库名称的列表。转储包括命名数据库中的所有对象。此选项的多个实例是累加的。有关更多信息,请参阅 mysqlpump 对象选择。 -
--include-events=*event_list*命令行格式 --include-events=event_list类型 字符串 转储*
event_list*中的事件,这是一个包含一个或多个逗号分隔事件名称的列表。此选项的多个实例是累加的。有关更多信息,请参阅 mysqlpump 对象选择。 -
--include-routines=*routine_list*命令行格式 --include-routines=routine_list类型 字符串 转储*
routine_list*中的例程,这是一个包含一个或多个逗号分隔的例程(存储过程或函数)名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--include-tables=*table_list*命令行格式 --include-tables=table_list类型 字符串 转储*
table_list*中的表,这是一个包含一个或多个逗号分隔的表名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--include-triggers=*trigger_list*命令行格式 --include-triggers=trigger_list类型 字符串 转储*
trigger_list*中的触发器,这是一个包含一个或多个逗号分隔的触发器名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--include-users=*user_list*命令行格式 --include-users=user_list类型 字符串 转储*
user_list*中的用户帐户,这是一个包含一个或多个逗号分隔的用户名称的列表。此选项的多个实例是累加的。有关更多信息,请参见 mysqlpump 对象选择。 -
--insert-ignore命令行格式 --insert-ignore写入
INSERT IGNORE语句而不是INSERT语句。 -
--log-error-file=*file_name*命令行格式 --log-error-file=file_name类型 文件名 通过将警告和错误附加到指定的文件名来记录警告和错误。如果未提供此选项,mysqlpump将警告和错误写入标准错误输出。
-
--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=*N*命令行格式 --max-allowed-packet=N类型 数值 默认值 25165824客户端/服务器通信缓冲区的最大大小。默认值为 24MB,最大值为 1GB。
-
--net-buffer-length=*N*命令行格式 --net-buffer-length=N类型 数值 默认值 1047552客户端/服务器通信缓冲区的初始大小。在创建多行
INSERT语句(如使用--extended-insert选项时),mysqlpump创建长度最长达到*N*字节的行。如果您使用此选项来增加值,请确保 MySQL 服务器的net_buffer_length系统变量至少具有这么大的值。 -
--no-create-db命令行格式 --no-create-db抑制可能包含在输出中的任何
CREATE DATABASE语句。 -
--no-create-info,-t命令行格式 --no-create-info不要编写创建每个转储表的
CREATE TABLE语句。 -
--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 节,“影响选项文件处理的命令行选项”。
-
--parallel-schemas=[*N*:]*db_list*命令行格式 --parallel-schemas=[N:]schema_list类型 字符串 创建一个用于处理
db_list中的数据库的队列,其中db_list是一个或多个逗号分隔的数据库名称列表。如果给定N,则队列使用N个线程。如果未给定N,则--default-parallelism选项确定队列线程的数量。此选项的多个实例会创建多个队列。mysqlpump 还会创建一个默认队列,用于未在任何
--parallel-schemas选项中命名的数据库,以及在命令选项选择它们时用于转储用户定义。有关更多信息,请参见 mysqlpump 并行处理。 -
--password[=*password*],-p[*password*]命令行格式 --password[=password]类型 字符串 用于连接到服务器的 MySQL 帐户的密码。密码值是可选的。如果未提供,mysqlpump 会提示输入一个。如果提供了密码,则
--password=或-p和后面的密码之间 不能有空格。如果未指定密码选项,则默认情况下不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。请参阅 第 8.1.2.1 节,“终端用户密码安全指南”。
要明确指定没有密码,并且 mysqlpump 不应提示输入密码,请使用
--skip-password选项。 -
用于连接到服务器的 MySQL 帐户的多因素身份验证因子 1 的密码。密码值是可选的。如果未提供,mysqlpump 会提示输入一个。如果提供了密码,则
--password1=和后面的密码之间 不能有空格。如果未指定密码选项,则默认情况下不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。请参阅 第 8.1.2.1 节,“终端用户密码安全指南”。
明确指定没有密码,并且mysqlpump不���提示输入密码,请使用
--skip-password1选项。--password1和--password是同义词,--skip-password1和--skip-password也是。 -
用于连接到服务器的 MySQL 帐户的多因素认证因子 2 的密码。此选项的语义类似于
--password1的语义;有关详细信息,请参见该选项的描述。 -
用于连接到服务器的 MySQL 帐户的多因素认证因子 3 的密码。此选项的语义类似于
--password1的语义;有关详细信息,请参见该选项的描述。 -
--plugin-dir=*dir_name*命令行格式 --plugin-dir=dir_name类型 目录名称 查找插件的目录。如果使用
--default-auth选项指定身份验证插件但mysqlpump找不到它,请指定此选项。参见第 8.2.17 节,“可插拔认证”。 -
--port=*port_num*,-P *port_num*命令行格式 --port=port_num类型 数字 默认值 3306用于 TCP/IP 连接的端口号。
-
--print-defaults命令行格式 --print-defaults打印程序名称以及从选项文件获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}命令行格式 --protocol=type类型 字符串 默认值 [见文本]有效值 TCP``SOCKET``PIPE``MEMORY用于连接到服务器的传输协议。当其他连接参数通常导致使用不希望使用的协议时,这很有用。有关允许值的详细信息,请参见第 6.2.7 节,“连接传输协议”。
-
--replace命令行格式 --replace使用
REPLACE语句而不是INSERT语句。 -
--result-file=*file_name*命令行格式 --result-file=file_name类型 文件名 将输出直接定向到指定的文件。即使在生成转储时发生错误,结果文件也会被创建并覆盖其先前的内容。
此选项应在 Windows 上使用,以防止换行符
\n被转换为\r\n回车/换行序列。 -
--routines命令行格式 --routines类型 布尔值 默认值 TRUE在输出中包含已存储的例程(过程和函数)的转储数据库。此选项需要全局
SELECT权限。使用
--routines生成的输出包含CREATE PROCEDURE和CREATE FUNCTION语句以创建例程。此选项默认启用;使用
--skip-routines来禁用它。 -
--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 可插拔认证”。 -
--set-charset命令行格式 --set-charset将
SET NAMES *default_character_set*写入输出。此选项默认启用。要禁用它并抑制
SET NAMES语句,请使用--skip-set-charset。 -
--set-gtid-purged=*value*命令行格式 --set-gtid-purged=value类型 枚举 默认值 AUTO有效值 OFF``ON``AUTO此选项通过指示是否向输出添加
SET @@GLOBAL.gtid_purged语句,使得可以控制写入转储文件的全局事务 ID(GTID)信息。此选项还可能导致在重新加载转储文件时向输出写入一个禁用二进制日志的语句。下表显示了允许的选项值。默认值为
AUTO。值 含义 OFF不向输出添加任何 SET语句。ON向输出添加一个 SET语句。如果服务器未启用 GTIDs,则会发生错误。AUTO如果服务器启用了 GTIDs,则向输出添加一个 SET语句。当重新加载转储文件时,
--set-gtid-purged选项对二进制日志的影响如下:-
--set-gtid-purged=OFF:不向输出添加SET @@SESSION.SQL_LOG_BIN=0;。 -
--set-gtid-purged=ON:向输出添加SET @@SESSION.SQL_LOG_BIN=0;。 -
--set-gtid-purged=AUTO:如果您正在备份的服务器启用了 GTIDs(即AUTO评估为ON),则向输出添加SET @@SESSION.SQL_LOG_BIN=0;。
-
-
--single-transaction命令行格式 --single-transaction此选项将事务隔离模式设置为
REPEATABLE READ,并在转储数据之前向服务器发送一个START TRANSACTIONSQL 语句。仅对诸如InnoDB之类的事务表有用,因为它会在发出START TRANSACTION时转储数据库的一致状态,而不会阻塞任何应用程序。在使用此选项时,应该记住只有
InnoDB表会以一致的状态进行转储。例如,使用此选项时转储的任何MyISAM或MEMORY表可能仍会改变状态。在进行
--single-transaction转储时,为确保有效的转储文件(正确的表内容和二进制日志坐标),不应有其他连接使用以下语句:ALTER TABLE、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE。一致性读取与这些语句不隔离,因此在要转储的表上使用它们可能导致由mysqlpump执行的用于检索表内容的SELECT获取不正确的内容或失败。--add-locks和--single-transaction是互斥的。 -
--skip-definer命令行格式 --skip-definer类型 布尔值 默认值 FALSE从视图和存储程序的
CREATE语句中省略DEFINER和SQL SECURITY子句。重新加载转储文件时,创建使用默认DEFINER和SQL SECURITY值的对象。参见第 27.6 节,“存储对象访问控制”。 -
--skip-dump-rows,-d命令行格式 --skip-dump-rows类型 布尔值 默认值 FALSE不要转储表行。
-
--skip-generated-invisible-primary-key命令行格式 --skip-generated-invisible-primary-key引入版本 8.0.30 类型 布尔值 默认值 FALSE此选项从 MySQL 8.0.30 开始可用,导致生成的不可见主键(GIPKs)在转储中被排除。有关 GIPK 和 GIPK 模式的更多信息,请参见第 15.1.20.11 节,“生成的不可见主键”。
-
--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 对象模块不可用,则
--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 库。有关详细信息,请��见 第 8.3.2 节,“加密连接 TLS 协议和密码套件”。
-
--triggers命令行格式 --triggers类型 布尔 默认值 TRUE在输出中为每个转储表包括触发器。
默认情况下启用此选项;使用
--skip-triggers来禁用它。 -
--tz-utc命令行格式 --tz-utc此选项允许在不同时区的服务器之间转储和重新加载
TIMESTAMP列。mysqlpump将其连接时区设置为 UTC,并在转储文件中添加SET TIME_ZONE='+00:00'。如果没有此选项,TIMESTAMP列将在源服务器和目标服务器的本地时区中转储和重新加载,如果服务器位于不同的时区,可能会导致值发生变化。--tz-utc也可以防止由于夏令时变化而导致的变化。默认情况下启用此选项;使用
--skip-tz-utc来禁用它。 -
--user=*user_name*,-u *user_name*命令行格式 --user=user_name类型 字符串 用于连接到服务器的 MySQL 帐户的用户名。
如果您在 MySQL 8.0.31 或更高版本中使用
Rewriter插件,则应授予此用户SKIP_QUERY_REWRITE权限。 -
--users命令行格式 --users类型 布尔 默认值 FALSE将用户帐户转储为
CREATE USER和GRANT语句的逻辑定义。用户定义存储在
mysql系统数据库的授权表中。默认情况下,mysqlpump不包括mysql数据库转储中的授权表。要将授权表的内容作为逻辑定义转储,请使用--users选项并禁止所有数据库转储:mysqlpump --exclude-databases=% --users -
--version,-V命令行格式 --version显示版本信息并退出。
-
--watch-progress命令行格式 --watch-progress类型 布尔 默认值 TRUE定期显示有关已完成和总表、行和其他对象数量的进度指示器。
默认情况下启用此选项;使用
--skip-watch-progress来禁用它。 -
--zstd-compression-level=*level*命令行格式 --zstd-compression-level=#引入版本 8.0.18 类型 整数 用于使用
zstd压缩算法连接到服务器的压缩级别。允许的级别从 1 到 22,较大的值表示较高级别的压缩。默认的zstd压缩级别为 3。压缩级别设置对不使用zstd压缩的连接没有影响。更多信息,请参见 6.2.8 节,“连接压缩控制”。
此选项在 MySQL 8.0.18 版本中添加。
mysqlpump 对象选择
mysqlpump 具有一组包含和排除选项,可过滤多种对象类型,并提供对要转储的对象进行灵活控制:
-
--include-databases和--exclude-databases适用于数据库及其内部的所有对象。 -
--include-tables和--exclude-tables适用于表。这些选项还会影响与表相关的触发器,除非给出了特定于触发器的选项。 -
--include-triggers和--exclude-triggers适用于触发器。 -
--include-routines和--exclude-routines适用于存储过程和函数。如果一个例程选项匹配存储过程名称,它也会匹配同名的存储函数。 -
--include-events和--exclude-events适用于事件调度器事件。 -
--include-users和--exclude-users适用于用户账户。
任何包含或排除选项都可以多次给出。效果是累加的。这些选项的顺序不重要。
每个包含和排除选项的值是逗号分隔的适当对象类型的名称列表。例如:
--exclude-databases=test,world
--include-tables=customer,invoice
通配符字符允许在对象名称中使用:
-
%匹配零个或多个字符的任意序列。 -
_匹配任意单个字符。
例如,--include-tables=t%,__tmp 匹配所有以 t 开头的表名和以 tmp 结尾的五个字符表名。
对于用户,没有主机部分指定的名称会被解释为隐含主机%。例如,u1和u1@%是等效的。这与 MySQL 通常适用的等效性相同(参见第 8.2.4 节,“指定帐户名称”)。
包含和排除选项的交互如下:
-
默认情况下,没有包含或排除选项,mysqlpump会转储所有数据库(特定例外情况在 mysqlpump 限制中有说明)。
-
如果在没有排除选项的情况下给出了包含选项,则只有被包含命名的对象会被转储。
-
如果在没有包含选项的情况下给出了排除选项,则所有对象都会被转储,除了被排除命名的对象。
-
如果给出了包含和排除选项,则所有被排除的对象和未被包含的对象都不会被转储。所有其他对象都会被转储。
如果正在转储多个数据库,则可以通过使用数据库名称限定对象名称来命名特定数据库中的表、触发器和例程。以下命令转储数据库db1和db2,但排除表db1.t1和db2.t2:
mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2
以下选项提供了指定要转储的数据库的替代方法:
-
--all-databases选项会转储所有数据库(特定例外情况在 mysqlpump 限制中有说明)。这等同于根本不指定任何对象选项(默认mysqlpump的操作是转储所有内容)。--include-databases=%类似于--all-databases,但选择所有数据库进行转储,即使它们是--all-databases的例外情况。 -
--databases选项会导致mysqlpump将所有名称参数视为要转储的数据库名称。这等同于一个--include-databases选项,命名相同的数据库。
mysqlpump 并行处理
mysqlpump可以使用并行处理来实现并发处理。您可以选择数据库之间的并发性(同时转储多个数据库)和数据库内的并发性(同时转储给定数据库中的多个对象)。
默认情况下,mysqlpump设置一个队列和两个线程。您可以创建额外的队列并控制分配给每个队列的线程数,包括默认队列:
-
--default-parallelism=*N*指定每个队列使用的默认线程数。如果没有此选项,*N*为 2。默认队列始终使用默认线程数。除非另有说明,否则其他队列使用默认线程数。
-
--parallel-schemas=[*N*:]*db_list*设置一个处理队列,用于转储*db_list中命名的数据库,并可选择指定队列使用的线程数。db_list是逗号分隔的数据库名称列表。如果选项参数以*N*:开头,则队列使用N*个线程。否则,--default-parallelism选项确定队列线程数。多个
--parallel-schemas选项实例会创建多个队列。数据库列表中的名称允许包含与过滤选项支持的
%和_通配符相同的字符(请参阅 mysqlpump 对象选择)。
mysqlpump使用默认队列来处理未明确命名的任何数据库,并在命令选项选择它们时用于转储用户定义。
通常,对于多个队列,mysqlpump在队列处理的数据库集之间使用并行性,以同时转储多个数据库。对于使用多个线程的队列,mysqlpump在数据库内部使用并行性,以同时转储给定数据库中的多个对象。也可能会发生异常;例如,mysqlpump可能会在从服务器获取数据库对象列表时阻塞队列。
启用并行性后,不同数据库的输出可能会交错。例如,并行转储的多个表中的INSERT语句可能会交错;这些语句不会按任何特定顺序编写。这不会影响重新加载,因为输出语句会使用数据库名称限定对象名称,或根据需要在之前加上USE语句。
并行性的粒度是单个数据库对象。例如,单个表不能使用多个线程并行转储。
示例:
mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
mysqlpump设置一个队列来处理db1和db2,另一个队列来处理db3,以及一个默认队列来处理所有其他数据库。所有队列都使用两个线程。
mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
--default-parallelism=4
这与前面的示例相同,只是所有队列都使用四个线程。
mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
db1 和 db2 的队列使用五个线程,db3 的队列使用三个线程,而默认队列使用默认的两个线程。
作为一个特例,使用 --default-parallelism=0 和没有 --parallel-schemas 选项时,mysqlpump 作为单线程进程运行,并且不创建任何队列。
mysqlpump 限制
mysqlpump 默认不会转储 performance_schema、ndbinfo 或 sys 模式。要转储其中任何一个,请在命令行上明确命名它们。您还可以使用 --databases 或 --include-databases 选项来命名它们。
mysqlpump 不会转储 INFORMATION_SCHEMA 模式。
mysqlpump 不会转储 InnoDB CREATE TABLESPACE 语句。
mysqlpump 使用 CREATE USER 和 GRANT 语句以逻辑形式转储用户帐户(例如,当您使用 --include-users 或 --users 选项时)。因此,默认情况下,对 mysql 系统数据库的转储不包括包含用户定义的授权表:user、db、tables_priv、columns_priv、procs_priv 或 proxies_priv。要转储其中任何授权表,请在 mysql 数据库后面命名表名:
mysqlpump mysql user db ...
6.5.7 mysqlshow — 显示数据库、表和列信息
mysqlshow客户端可用于快速查看存在哪些数据库、它们的表,或表的列或索引。
mysqlshow提供了一个命令行接口来执行几个 SQL SHOW语句。请参阅 Section 15.7.7, “SHOW 语句”。相同的信息可以通过直接使用这些语句来获取。例如,您可以从mysql客户端程序中发出它们。
调用像这样的mysqlshow:
mysqlshow [*options*] [*db_name* [*tbl_name* [*col_name*]]]
-
如果没有给出数据库,则显示数据库名称列表。
-
如果没有给出表,则显示数据库中所有匹配的表。
-
如果没有给出列,则显示表中所有匹配的列和列类型。
输出仅显示您具有某些权限的那些数据库、表或列的名称。
如果最后一个参数包含 shell 或 SQL 通配符(*, ?, %, 或 _),则只显示与通配符匹配的名称。如果数据库名称包含任何下划线,那么应该用反斜杠(某些 Unix shell 需要两个)对其进行转义,以获取正确的表或列列表。* 和 ? 字符会转换为 SQL % 和 _ 通配符。当您尝试显示具有名称中带有 _ 的表的列时,这可能会导致一些混淆,因为在这种情况下,mysqlshow只会显示与模式匹配的表名。这很容易通过在命令行最后添加额外的 % 作为单独参数来解决。
mysqlshow支持以下选项,这些选项可以在命令行或选项文件的[mysqlshow]和[client]组中指定。有关 MySQL 程序使用的选项文件的信息,请参阅 Section 6.2.2.2, “使用选项文件”。
表 6.18 mysqlshow 选项
| 选项名称 | 描述 | 引入 | 废弃 |
|---|---|---|---|
| --bind-address | 使用指定的网络接口连接到 MySQL 服务器 | ||
| --character-sets-dir | 字符集所在目录 | ||
| --compress | 在客户端和服务器之间发送的所有信息进行压缩 | 8.0.18 | |
| --compression-algorithms | 连接到服务器时允许的压缩算法 | 8.0.18 | |
| --count | 每个表的行数 | ||
| --debug | 写入调试日志 | ||
| --debug-check | 程序退出时打印调试信息 | ||
| --debug-info | 程序退出时打印调试信息、内存和 CPU 统计信息 | ||
| --default-auth | 要使用的认证插件 | ||
| --default-character-set | 指定默认字符集 | ||
| --defaults-extra-file | 除了通常的选项文件之外,读取指定的选项文件 | ||
| --defaults-file | 仅读取指定的选项文件 | ||
| --defaults-group-suffix | 选项组后缀值 | ||
| --enable-cleartext-plugin | 启用明文认证插件 | ||
| --get-server-public-key | 从服务器请求 RSA 公钥 | ||
| --help | 显示帮助信息并退出 | ||
| --host | MySQL 服务器所在的主机 | ||
| --keys | 显示表索引 | ||
| --login-path | 从.mylogin.cnf 文件中读取登录路径选项 | ||
| --no-defaults | 不读取任何选项文件 | ||
| --password | 连接到服务器时使用的密码 | ||
| --password1 | 连接到服务器时使用的第一个多因��身份验证密码 | 8.0.27 | |
| --password2 | 连接到服务器时使用的第二个多因素身份验证密码 | 8.0.27 | |
| --password3 | 连接到服务器时使用的第三个多因素身份验证密码 | 8.0.27 | |
| --pipe | 使用命名管道连接到服务器(仅限 Windows) | ||
| --plugin-dir | 插件安装目录 | ||
| --port | 连接的 TCP/IP 端口号 | ||
| --print-defaults | 打印默认选项 | ||
| --protocol | 使用的传输协议 | ||
| --server-public-key-path | 包含 RSA 公钥的文件路径名 | ||
| --shared-memory-base-name | 共享内存连接的共享内存名称(仅限 Windows) | ||
| --show-table-type | 显示指示表类型的列 | ||
| --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 | |
| --status | 显示有关每个表的额外信息 | ||
| --tls-ciphersuites | 用于加密连接的可接受的 TLSv1.3 密码套件 | 8.0.16 | |
| --tls-version | 用于加密连接的可接受的 TLS 协议 | ||
| --user | 连接到服务器时要使用的 MySQL 用户名 | ||
| --verbose | 详细模式 | ||
| --version | 显示版本信息并退出 | ||
| --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=path类型 字符串 默认值 [none]安装字符集的目录。请参见第 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 中添加的。
-
--count命令行格式 --count显示每个表的行数。对于非
MyISAM表来说可能会很慢。 -
--debug[=*debug_options*],-# [*debug_options*]命令行格式 --debug[=debug_options]类型 字符串 默认值 d:t:o写入调试日志。典型的*
debug_options*字符串是d:t:o,*file_name*。默认值为d:t:o。只有在使用
WITH_DEBUG构建 MySQL 时才可用此选项。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--debug-check命令行格式 --debug-check类型 布尔值 默认值 FALSE程序退出时打印一些调试信息。
只有在使用
WITH_DEBUG构建 MySQL 时才可用此选项。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--debug-info命令行格式 --debug-info类型 布尔值 默认值 FALSE在程序退出时打印调试信息以及内存和 CPU 使用统计信息。
只有在使用
WITH_DEBUG构建 MySQL 时才可用此选项。由 Oracle 提供的 MySQL 发布二进制文件不使用此选项构建。 -
--default-character-set=*charset_name*命令行格式 --default-character-set=charset_name类型 字符串 将*
charset_name*作为默认字符集。请参见第 12.15 节,“字符集配置”。 -
--default-auth=*plugin*命令行格式 --default-auth=plugin类型 字符串 关于要使用哪个客户端端身份验证插件的提示。请参见第 8.2.17 节,“可插拔认证”。
-
--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*的组。例如,mysqlshow通常会读取[client]和[mysqlshow]组。如果此选项被指定为--defaults-group-suffix=_other,mysqlshow还会读取[client_other]和[mysqlshow_other]组。有关此选项和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--enable-cleartext-plugin命令行格式 --enable-cleartext-plugin类型 布尔值 默认值 FALSE启用
mysql_clear_password明文认证插件。(参见第 8.4.1.4 节,“客户端明文插件认证”。) -
--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 可插拔认证”。 -
--host=*host_name*,-h *host_name*命令行格式 --host=host_name类型 字符串 默认值 localhost连接到给定主机上的 MySQL 服务器。
-
--keys,-k命令行格式 --keys显示表索引。
-
--login-path=*name*命令行格式 --login-path=name类型 字符串 从
.mylogin.cnf登录路径文件中读取命名登录路径的选项。 “登录路径”是一个包含指定要连接到哪个 MySQL 服务器以及要作为哪个帐户进行身份验证的选项的选项组。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。请参见第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”。有关此选项和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--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 节,“影响选项文件处理的命令行选项”。
-
--password[=*password*],-p[*password*]命令行格式 --password[=password]类型 字符串 用于连接服务器的 MySQL 帐户的密码。密码值是可选的。如果未提供,mysqlshow会提示输入密码。如果提供了密码,则
--password=或-p后面必须没有空格。如果未指定密码选项,则默认不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。请参见第 8.1.2.1 节,“密码安全的最终用户指南”。
要明确指定没有密码,并且mysqlshow 不应提示输入密码,请使用
--skip-password选项。 -
MySQL 账户用于连接服务器的多因素认证因子 1 的密码。密码值是可选的。如果未提供,mysqlshow 将提示输入密码。如果提供,
--password1=和后面的密码之间不能有空格。如果未指定密码选项,则默认不发送密码。在命令行上指定密码应被视为不安全。为了避免在命令行上提供密码,请使用选项文件。请参阅 Section 8.1.2.1, “End-User Guidelines for Password Security”。
要明确指定没有密码,并且mysqlshow 不应提示输入密码,请使用
--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-dir=*dir_name*命令行格式 --plugin-dir=dir_name类型 目录名称 查找插件的目录。如果使用
--default-auth选项指定了认证插件但mysqlshow找不到它,则指定此选项。参见第 8.2.17 节,“可插拔认证”。 -
--port=*port_num*,-P *port_num*命令行格式 --port=port_num类型 数字 默认值 3306对于 TCP/IP 连接,要使用的端口号。
-
--print-defaults命令行格式 --print-defaults打印程序名称以及从选项文件获取的所有选项。
有关此选项和其他选项文件选项的更多信息,请参见第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}命令行格式 --protocol=type类型 字符串 默认值 [见文本]有效值 TCP``SOCKET``PIPE``MEMORY用于连接到服务器的传输协议。当其他连接参数通常导致使用您不想要的协议时,这很有用。有关允许值的详细信息,请参见第 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系统变量以支持共享内存连接时才适用。 -
--show-table-type,-t命令行格式 --show-table-type显示指示表类型的列,如
SHOW FULL TABLES。类型为BASE TABLE或VIEW。 -
--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 对象模块不可用,则
--ssl-fips-mode的唯一允许值为OFF。在这种情况下,将--ssl-fips-mode设置为ON或STRICT会导致客户端在启动时产生警告并在非 FIPS 模式下运行。从 MySQL 8.0.34 开始,此选项已被弃用。预计在未来的 MySQL 版本中将被移除。
-
-
--status,-i命令行格式 --status显示每个表的额外信息。
-
--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 协议和密码套件”。
-
--user=*user_name*,-u *user_name*命令行格式 --user=user_name,类型 字符串 用于连接到服务器的 MySQL 帐户的用户名。
-
--verbose,-v命令行格式 --verbose详细模式。打印程序执行的更多信息。可以多次使用此选项以增加信息量。
-
--version,-V命令行格式 --version显示版本信息并退出。
-
--zstd-compression-level=*level*命令行格式 --zstd-compression-level=#引入版本 8.0.18 类型 整数 用于使用
zstd压缩算法连接到服务器的压缩级别。允许的级别从 1 到 22,较大的值表示更高级别的压缩。默认的zstd压缩级别为 3。压缩级别设置对不使用zstd压缩的连接没有影响。欲了解更多信息,请参阅第 6.2.8 节,“连接压缩控制”。
此选项是在 MySQL 8.0.18 中添加的。