### 4.5.3 mysqlcheck——一个表维护程序

[](<>)[](<>)[](<>)[](<>)[](<>)

这[**mysql检查**](mysqlcheck.html)客户端执行表维护：它检查、修复、优化或分析表。

每个表都被锁定，因此在处理它时对其他会话不可用，尽管对于检查操作，该表被锁定`读`仅锁定（请参阅[第 13.3.6 节，“LOCK TABLES 和 UNLOCK TABLES 语句”](lock-tables.html), 有关更多信息`读`和`写`锁）。表维护操作可能很耗时，尤其是对于大型表。如果您使用[`--数据库`](mysqlcheck.html#option_mysqlcheck_databases)要么[`--所有数据库`](mysqlcheck.html#option_mysqlcheck_all-databases)处理一个或多个数据库中所有表的选项，调用[**mysql检查**](mysqlcheck.html)可能需要很长时间。（对于 MySQL 升级过程也是如此，如果它确定需要表检查，因为它以相同的方式处理表。）

[**mysql检查**](mysqlcheck.html)必须使用时[**mysqld**](mysqld.html)服务器正在运行，这意味着您不必停止服务器来执行表维护。

[**mysql检查**](mysqlcheck.html)使用 SQL 语句[`检查表`](check-table.html),[`维修台`](repair-table.html),[`分析表`](analyze-table.html)， 和[`优化表`](optimize-table.html)以方便用户的方式。它确定要执行的操作要使用哪些语句，然后将语句发送到服务器以执行。有关每个语句使用哪些存储引擎的详细信息，请参阅这些语句的说明[第 13.7.3 节，“表维护语句”](table-maintenance-statements.html).

所有存储引擎不一定都支持所有四种维护操作。在这种情况下，会显示一条错误消息。例如，如果`测试.t`是一个`记忆`表，尝试检查它会产生以下结果：

```
$> mysqlcheck test t
test.t
note     : The storage engine for the table doesn't support check
```

如果[**mysql检查**](mysqlcheck.html)无法修复表，请参阅[第 2.11.13 节，“重建或修复表或索引”](rebuilding-tables.html)用于手动表修复策略。例如，对于这种情况`InnoDB`表，可以检查[`检查表`](check-table.html)，但未修复[`维修台`](repair-table.html).

警告

最好在执行表修复操作之前对表进行备份；在某些情况下，该操作可能会导致数据丢失。可能的原因包括但不限于文件系统错误。

调用的一般方式有以下三种[**mysql检查**](mysqlcheck.html)：

```
mysqlcheck [options] db_name [tbl_name ...]
mysqlcheck [options] --databases db_name ...
mysqlcheck [options] --all-databases
```

如果您不命名以下任何表*`数据库名称`*或者如果您使用[`--数据库`](mysqlcheck.html#option_mysqlcheck_databases)要么[`--所有数据库`](mysqlcheck.html#option_mysqlcheck_all-databases)选项，检查整个数据库。

[**mysql检查**](mysqlcheck.html)与其他客户端程序相比，具有特殊功能。检查表的默认行为（[`- 查看`](mysqlcheck.html#option_mysqlcheck_check)) 可以通过重命名二进制文件来更改。如果你想拥有一个默认修复表的工具，你应该只复制一份[**mysql检查**](mysqlcheck.html)命名为**mysql修复**, 或建立一个符号链接到[**mysql检查**](mysqlcheck.html)命名为**mysql修复**.如果你调用**mysql修复**，它修复表。

下表中显示的名称可用于更改[**mysql检查**](mysqlcheck.html)默认行为。

| 命令 | 意义 |
| --- | --- |
| **mysql修复** | 默认选项是[`- 维修`](mysqlcheck.html#option_mysqlcheck_repair) |
| **mysql分析** | 默认选项是[`- 分析`](mysqlcheck.html#option_mysqlcheck_analyze) |
| **mysql优化** | 默认选项是[`--优化`](mysqlcheck.html#option_mysqlcheck_optimize) |

[**mysql检查**](mysqlcheck.html)支持以下选项，可以在命令行中指定，也可以在`[mysql检查]`和`[客户]`选项文件的组。有关 MySQL 程序使用的选项文件的信息，请参阅[第 4.2.2.2 节，“使用选项文件”](option-files.html).

[](<>)

**表 4.13 mysqlcheck 选项**

| 选项名称 | 描述 | 介绍 | 已弃用 |
| ---- | --- | --- | --- |
| [--所有数据库](mysqlcheck.html#option_mysqlcheck_all-databases) | 检查所有数据库中的所有表 |  |  |
| [--全合一](mysqlcheck.html#option_mysqlcheck_all-in-1) | 为每个数据库执行一个语句，该语句命名该数据库中的所有表 |  |  |
| [--分析](mysqlcheck.html#option_mysqlcheck_analyze) | 分析表格 |  |  |
| [--自动修理](mysqlcheck.html#option_mysqlcheck_auto-repair) | 如果已检查的表已损坏，则自动修复它 |  |  |
| [--绑定地址](mysqlcheck.html#option_mysqlcheck_bind-address) | 使用指定的网络接口连接 MySQL Server |  |  |
| [--字符集目录](mysqlcheck.html#option_mysqlcheck_character-sets-dir) | 安装字符集的目录 |  |  |
| [--查看](mysqlcheck.html#option_mysqlcheck_check) | 检查表格是否有错误 |  |  |
| [--check-only-changed](mysqlcheck.html#option_mysqlcheck_check-only-changed) | 仅检查自上次检查以来已更改的表 |  |  |
| [--检查升级](mysqlcheck.html#option_mysqlcheck_check-upgrade) | 使用 FOR UPGRADE 选项调用 CHECK TABLE |  |  |
| [--压缩](mysqlcheck.html#option_mysqlcheck_compress) | 压缩客户端和服务器之间发送的所有信息 |  | 8.0.18 |
| [--压缩算法](mysqlcheck.html#option_mysqlcheck_compression-algorithms) | 允许连接到服务器的压缩算法 | 8.0.18 |  |
| [-- 数据库](mysqlcheck.html#option_mysqlcheck_databases) | 将所有参数解释为数据库名称 |  |  |
| [--调试](mysqlcheck.html#option_mysqlcheck_debug) | 写调试日志 |  |  |
| [--调试检查](mysqlcheck.html#option_mysqlcheck_debug-check) | 程序退出时打印调试信息 |  |  |
| [--调试信息](mysqlcheck.html#option_mysqlcheck_debug-info) | 程序退出时打印调试信息、内存和 CPU 统计信息 |  |  |
| [--默认身份验证](mysqlcheck.html#option_mysqlcheck_default-auth) | 要使用的身份验证插件 |  |  |
| [--默认字符集](mysqlcheck.html#option_mysqlcheck_default-character-set) | 指定默认字符集 |  |  |
| [--defaults-额外文件](mysqlcheck.html#option_mysqlcheck_defaults-extra-file) | 除了通常的选项文件外，还读取命名的选项文件 |  |  |
| [--默认文件](mysqlcheck.html#option_mysqlcheck_defaults-file) | 只读命名选项文件 |  |  |
| [--defaults-组后缀](mysqlcheck.html#option_mysqlcheck_defaults-group-suffix) | 选项组后缀值 |  |  |
| [--启用明文插件](mysqlcheck.html#option_mysqlcheck_enable-cleartext-plugin) | 启用明文身份验证插件 |  |  |
| [-- 扩展](mysqlcheck.html#option_mysqlcheck_extended) | 检查和修复表 |  |  |
| [--快速地](mysqlcheck.html#option_mysqlcheck_fast) | 仅检查未正确关闭的表 |  |  |
| [--力量](mysqlcheck.html#option_mysqlcheck_force) | 即使发生 SQL 错误也继续 |  |  |
| [--get-server-public-key](mysqlcheck.html#option_mysqlcheck_get-server-public-key) | 从服务器请求 RSA 公钥 |  |  |
| [--帮助](mysqlcheck.html#option_mysqlcheck_help) | 显示帮助信息并退出 |  |  |
| [--主持人](mysqlcheck.html#option_mysqlcheck_host) | MySQL服务器所在的主机 |  |  |
| [--登录路径](mysqlcheck.html#option_mysqlcheck_login-path) | 从 .mylogin.cnf 读取登录路径选项 |  |  |
| [--中等检查](mysqlcheck.html#option_mysqlcheck_medium-check) | 进行比 --extended 操作更快的检查 |  |  |
| [--无默认值](mysqlcheck.html#option_mysqlcheck_no-defaults) | 不读取选项文件 |  |  |
| [--优化](mysqlcheck.html#option_mysqlcheck_optimize) | 优化表格 |  |  |
| [--密码](mysqlcheck.html#option_mysqlcheck_password) | 连接服务器时使用的密码 |  |  |
| [--密码1](mysqlcheck.html#option_mysqlcheck_password1) | 连接到服务器时使用的第一个多重身份验证密码 | 8.0.27 |  |
| [--密码2](mysqlcheck.html#option_mysqlcheck_password2) | 连接到服务器时使用的第二个多重身份验证密码 | 8.0.27 |  |
| [--密码3](mysqlcheck.html#option_mysqlcheck_password3) | 连接到服务器时使用的第三个多重身份验证密码 | 8.0.27 |  |
| [--管道](mysqlcheck.html#option_mysqlcheck_pipe) | 使用命名管道连接到服务器（仅限 Windows） |  |  |
| [--插件目录](mysqlcheck.html#option_mysqlcheck_plugin-dir) | 插件安装目录 |  |  |
| [--港口](mysqlcheck.html#option_mysqlcheck_port) | 用于连接的 TCP/IP 端口号 |  |  |
| [--打印默认值](mysqlcheck.html#option_mysqlcheck_print-defaults) | 打印默认选项 |  |  |
| [--协议](mysqlcheck.html#option_mysqlcheck_protocol) | 要使用的传输协议 |  |  |
| [--快的](mysqlcheck.html#option_mysqlcheck_quick) | 最快的检查方法 |  |  |
| [--维修](mysqlcheck.html#option_mysqlcheck_repair) | 执行可以修复几乎任何东西的修复，除了不唯一的唯一键 |  |  |
| [--服务器公钥路径](mysqlcheck.html#option_mysqlcheck_server-public-key-path) | 包含 RSA 公钥的文件的路径名 |  |  |
| [--shared-memory-base-name](mysqlcheck.html#option_mysqlcheck_shared-memory-base-name) | 共享内存连接的共享内存名称（仅限 Windows） |  |  |
| [--无声](mysqlcheck.html#option_mysqlcheck_silent) | 静音模式 |  |  |
| [--跳过数据库](mysqlcheck.html#option_mysqlcheck_skip-database) | 从执行的操作中省略此数据库 |  |  |
| [--插座](mysqlcheck.html#option_mysqlcheck_socket) | 要使用的 Unix 套接字文件或 Windows 命名管道 |  |  |
| [--ssl-ca](mysqlcheck.html#option_mysqlcheck_ssl) | 包含受信任 SSL 证书颁发机构列表的文件 |  |  |
| [--ssl-capath](mysqlcheck.html#option_mysqlcheck_ssl) | 包含受信任的 SSL 证书颁发机构证书文件的目录 |  |  |
| [--ssl 证书](mysqlcheck.html#option_mysqlcheck_ssl) | 包含 X.509 证书的文件 |  |  |
| [--ssl密码](mysqlcheck.html#option_mysqlcheck_ssl) | 连接加密的允许密码 |  |  |
| [--ssl-crl](mysqlcheck.html#option_mysqlcheck_ssl) | 包含证书吊销列表的文件 |  |  |
| [--ssl-crlpath](mysqlcheck.html#option_mysqlcheck_ssl) | 包含证书吊销列表文件的目录 |  |  |
| [--ssl-fips 模式](mysqlcheck.html#option_mysqlcheck_ssl-fips-mode) | 客户端是否开启 FIPS 模式 |  |  |
| [--ssl 密钥](mysqlcheck.html#option_mysqlcheck_ssl) | 包含 X.509 密钥的文件 |  |  |
| [--ssl 模式](mysqlcheck.html#option_mysqlcheck_ssl) | 连接到服务器的所需安全状态 |  |  |
| [--ssl 会话数据](mysqlcheck.html#option_mysqlcheck_ssl) | 包含 SSL 会话数据的文件 | 8.0.29 |  |
| [--ssl-session-data-continue-on-failed-reuse](mysqlcheck.html#option_mysqlcheck_ssl) | 会话重用失败时是否建立连接 | 8.0.29 |  |
| [-- 表](mysqlcheck.html#option_mysqlcheck_tables) | 覆盖 --databases 或 -B 选项 |  |  |
| [--tls-密码套件](mysqlcheck.html#option_mysqlcheck_tls-ciphersuites) | 用于加密连接的允许 TLSv1.3 密码套件 | 8.0.16 |  |
| [--tls-版本](mysqlcheck.html#option_mysqlcheck_tls-version) | 加密连接的允许 TLS 协议 |  |  |
| [--使用-frm](mysqlcheck.html#option_mysqlcheck_use-frm) | 用于 MyISAM 表的修复操作 |  |  |
| [--用户](mysqlcheck.html#option_mysqlcheck_user) | 连接到服务器时使用的 MySQL 用户名 |  |  |
| [--详细](mysqlcheck.html#option_mysqlcheck_verbose) | 详细模式 |  |  |
| [--版本](mysqlcheck.html#option_mysqlcheck_version) | 显示版本信息并退出 |  |  |
| [--write-binlog](mysqlcheck.html#option_mysqlcheck_write-binlog) | 将 ANALYZE、OPTIMIZE、REPAIR 语句记录到二进制日志中。--skip-write-binlog 添加 NO\_写\_到\_BINLOG 到这些语句 |  |  |
| [--zstd-压缩级别](mysqlcheck.html#option_mysqlcheck_zstd-compression-level) | 与使用 zstd 压缩的服务器的连接的压缩级别 | 8.0.18 |  |

-   [](<>) [`- 帮助`](mysqlcheck.html#option_mysqlcheck_help),`-？`

    [](<>)[](<>)

    显示帮助信息并退出。

-   [](<>) [`--所有数据库`](mysqlcheck.html#option_mysqlcheck_all-databases),`-一种`

    [](<>)[](<>)

    检查所有数据库中的所有表。这与使用[`--数据库`](mysqlcheck.html#option_mysqlcheck_databases)选项并在命令行上命名所有数据库，除了`INFORMATION_SCHEMA`和`性能模式`不检查数据库。可以通过显式命名它们来检查它们[`--数据库`](mysqlcheck.html#option_mysqlcheck_databases)选项。

-   [](<>) [`--all-in-1`](mysqlcheck.html#option_mysqlcheck_all-in-1),`-1`

    [](<>)[](<>)

    不是为每个表发出一条语句，而是为每个数据库执行一条语句，该语句命名该数据库中要处理的所有表。

-   [](<>) [`- 分析`](mysqlcheck.html#option_mysqlcheck_analyze),`-一种`

    [](<>)[](<>)

    分析表格。

-   [](<>) [`- 自动修理`](mysqlcheck.html#option_mysqlcheck_auto-repair)

    [](<>)[](<>)

    如果已检查的表已损坏，请自动修复它。在检查完所有表格后进行任何必要的维修。

-   [](<>) [`--绑定地址=*`IP地址`*`](mysqlcheck.html#option_mysqlcheck_bind-address)

    [](<>)[](<>)

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

-   [](<>) [`--字符集目录=*`目录名`*`](mysqlcheck.html#option_mysqlcheck_character-sets-dir)

    [](<>)[](<>)

    安装字符集的目录。看[第 10.15 节，“字符集配置”](charset-configuration.html).

-   [](<>) [`- 查看`](mysqlcheck.html#option_mysqlcheck_check),`-c`

    [](<>)[](<>)

    检查表格是否有错误。这是默认操作。

-   [](<>) [`--check-only-changed`](mysqlcheck.html#option_mysqlcheck_check-only-changed),`-C`

    [](<>)[](<>)

    仅检查自上次检查后发生更改或未正确关闭的表。

-   [](<>) [`--检查升级`](mysqlcheck.html#option_mysqlcheck_check-upgrade),`-g`

    [](<>)[](<>)

    调用[`检查表`](check-table.html)与`升级`用于检查表是否与当前版本的服务器不兼容的选项。

-   [](<>) [`- 压缩`](mysqlcheck.html#option_mysqlcheck_compress)

    [](<>)[](<>)

    如果可能，压缩客户端和服务器之间发送的所有信息。看[第 4.2.8 节，“连接压缩控制”](connection-compression-control.html).

    从 MySQL 8.0.18 开始，此选项已弃用。期望它在 MySQL 的未来版本中被删除。看[配置旧版连接压缩](connection-compression-control.html#connection-compression-legacy-configuration).

-   [](<>) [`--压缩算法=*`价值`*`](mysqlcheck.html#option_mysqlcheck_compression-algorithms)

    [](<>)[](<>)

    连接到服务器的允许压缩算法。可用的算法与[`协议压缩算法`](server-system-variables.html#sysvar_protocol_compression_algorithms)系统变量。默认值为`未压缩`.

    有关详细信息，请参阅[第 4.2.8 节，“连接压缩控制”](connection-compression-control.html).

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

-   [](<>) [`--数据库`](mysqlcheck.html#option_mysqlcheck_databases),`-B`

    [](<>)[](<>)

    处理命名数据库中的所有表。一般，[**mysql检查**](mysqlcheck.html)将命令行上的第一个 name 参数视​​为数据库名称，并将任何后续名称视为表名称。使用此选项，它将所有名称参数视为数据库名称。

-   [](<>) [`--调试[=*`调试选项`*]`](mysqlcheck.html#option_mysqlcheck_debug),`-# [*`调试选项`*]`

    [](<>)[](<>)

    编写调试日志。一个典型的*`调试选项`*字符串是`d:t:o,*`文件名`*`.默认是`d:t:o`.

    仅当 MySQL 是使用[`WITH_DEBUG`](source-configuration-options.html#option_cmake_with_debug).Oracle 提供的 MySQL 发行版二进制文件是*不是*使用此选项构建。

-   [](<>) [`--调试检查`](mysqlcheck.html#option_mysqlcheck_debug-check)

    [](<>)[](<>)

    程序退出时打印一些调试信息。

    仅当 MySQL 是使用[`WITH_DEBUG`](source-configuration-options.html#option_cmake_with_debug).Oracle 提供的 MySQL 发行版二进制文件是*不是*使用此选项构建。

-   [](<>) [`- 调试信息`](mysqlcheck.html#option_mysqlcheck_debug-info)

    [](<>)[](<>)

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

    仅当 MySQL 是使用[`WITH_DEBUG`](source-configuration-options.html#option_cmake_with_debug).Oracle 提供的 MySQL 发行版二进制文件是*不是*使用此选项构建。

-   [](<>) [`--默认字符集=*`字符集名称`*`](mysqlcheck.html#option_mysqlcheck_default-character-set)

    [](<>)[](<>)

    采用*`字符集名称`*作为默认字符集。看[第 10.15 节，“字符集配置”](charset-configuration.html).

-   [](<>) [`--defaults-extra-file=*`文件名`*`](mysqlcheck.html#option_mysqlcheck_defaults-extra-file)

    [](<>)[](<>)

    在全局选项文件之后但（在 Unix 上）在用户选项文件之前读取此选项文件。如果文件不存在或无法访问，则会发生错误。如果*`文件名`*不是绝对路径名，它是相对于当前目录解释的。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--默认文件=*`文件名`*`](mysqlcheck.html#option_mysqlcheck_defaults-file)

    [](<>)[](<>)

    仅使用给定的选项文件。如果文件不存在或无法访问，则会发生错误。如果*`文件名`*不是绝对路径名，它是相对于当前目录解释的。

    例外：即使有[`--defaults 文件`](option-file-options.html#option_general_defaults-file), 客户端程序读取`.mylogin.cnf`.

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--defaults-group-suffix=*`字符串`*`](mysqlcheck.html#option_mysqlcheck_defaults-group-suffix)

    [](<>)[](<>)

    不仅可以读取通常的选项组，还可以读取具有通常名称和后缀的组*`字符串`*.例如，[**mysql检查**](mysqlcheck.html)通常读取`[客户]`和`[mysql检查]`团体。如果这个选项被给出为[`--defaults-group-suffix=_other`](mysqlcheck.html#option_mysqlcheck_defaults-group-suffix),[**mysql检查**](mysqlcheck.html)还读取`[client_other]`和`[mysqlcheck_other]`团体。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--扩展`](mysqlcheck.html#option_mysqlcheck_extended),`-e`

    [](<>)[](<>)

    如果您使用此选项检查表，它可以确保它们 100% 一致但需要很长时间。

    如果您使用此选项来修复表，它会运行扩展修复，不仅可能需要很长时间来执行，而且还可能产生大量垃圾行！

-   [](<>) [`--default-auth=*`插入`*`](mysqlcheck.html#option_mysqlcheck_default-auth)

    [](<>)[](<>)

    关于使用哪个客户端身份验证插件的提示。看[第 6.2.17 节，“可插拔身份验证”](pluggable-authentication.html).

-   [](<>) [`--启用明文插件`](mysqlcheck.html#option_mysqlcheck_enable-cleartext-plugin)

    [](<>)[](<>)

    启用`mysql_clear_password`明文身份验证插件。（看[第 6.4.1.4 节，“客户端明文可插入身份验证”](cleartext-pluggable-authentication.html).)

-   [](<>) [`- 快速地`](mysqlcheck.html#option_mysqlcheck_fast),`-F`

    [](<>)[](<>)

    仅检查未正确关闭的表。

-   [](<>) [`- 力量`](mysqlcheck.html#option_mysqlcheck_force),`-f`

    [](<>)[](<>)

    即使发生 SQL 错误也要继续。

-   [](<>) [`--get-server-public-key`](mysqlcheck.html#option_mysqlcheck_get-server-public-key)

    [](<>)[](<>)

    从服务器请求基于 RSA 密钥对的密码交换所需的公钥。此选项适用于通过`cache_sha2_password`身份验证插件。对于该插件，除非请求，否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户，此选项将被忽略。如果不使用基于 RSA 的密码交换，它也会被忽略，例如客户端使用安全连接连接到服务器的情况。

    如果[`--server-public-key-path=*`文件名`*`](mysqlcheck.html#option_mysqlcheck_server-public-key-path)给出并指定一个有效的公钥文件，它优先于[`--get-server-public-key`](mysqlcheck.html#option_mysqlcheck_get-server-public-key).

    有关信息`cache_sha2_password`插件，见[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) [`--主机=*`主机名`*`](mysqlcheck.html#option_mysqlcheck_host),`-h *`主机名`*`

    [](<>)[](<>)

    连接到给定主机上的 MySQL 服务器。

-   [](<>) [`--登录路径=*`姓名`*`](mysqlcheck.html#option_mysqlcheck_login-path)

    [](<>)[](<>)

    从命名登录路径中读取选项`.mylogin.cnf`登录路径文件。“登录路径”是一个选项组，其中包含指定要连接到哪个 MySQL 服务器以及要作为哪个帐户进行身份验证的选项。要创建或修改登录路径文件，请使用[**mysql\_配置\_编辑**](mysql-config-editor.html)效用。看[第 4.6.7 节，“mysql\_配置\_编辑器 — MySQL 配置实用程序”](mysql-config-editor.html).

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--中等检查`](mysqlcheck.html#option_mysqlcheck_medium-check),`-m`

    [](<>)[](<>)

    做一个比[`--扩展`](mysqlcheck.html#option_mysqlcheck_extended)手术。这只发现了所有错误的 99.99%，这在大多数情况下应该足够了。

-   [](<>) [`--no-defaults`](mysqlcheck.html#option_mysqlcheck_no-defaults)

    [](<>)[](<>)

    不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败，[`--no-defaults`](mysqlcheck.html#option_mysqlcheck_no-defaults)可以用来防止它们被读取。

    唯一的例外是`.mylogin.cnf`如果文件存在，则在所有情况下都会读取文件。这允许以比在命令行上更安全的方式指定密码，即使在[`--no-defaults`](mysqlcheck.html#option_mysqlcheck_no-defaults)用来。创造`.mylogin.cnf`， 使用[**mysql\_配置\_编辑**](mysql-config-editor.html)效用。看[第 4.6.7 节，“mysql\_配置\_编辑器 — MySQL 配置实用程序”](mysql-config-editor.html).

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--优化`](mysqlcheck.html#option_mysqlcheck_optimize),`-o`

    [](<>)[](<>)

    优化表格。

-   [](<>) [`--密码[=*`密码`*]`](mysqlcheck.html#option_mysqlcheck_password),`-p[*`密码`*]`

    [](<>)[](<>)

    用于连接服务器的 MySQL 帐户的密码。密码值是可选的。如果不给，[**mysql检查**](mysqlcheck.html)提示一个。如果给出，必须有*没有空间*之间[`--密码=`](mysqlcheck.html#option_mysqlcheck_password)要么`-p`和它后面的密码。如果未指定密码选项，则默认为不发送密码。

    在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码，请使用选项文件。看[第 6.1.2.1 节，“最终用户密码安全指南”](password-security-user.html).

    明确指定没有密码并且[**mysql检查**](mysqlcheck.html)不应该提示输入一个，使用[`--跳过密码`](mysqlcheck.html#option_mysqlcheck_password)选项。

-   [](<>) [`--密码1[=*`pass_val`*]`](mysqlcheck.html#option_mysqlcheck_password1)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因素 1 的密码。密码值是可选的。如果不给，[**mysql检查**](mysqlcheck.html)提示一个。如果给出，必须有*没有空间*之间[`--密码1=`](mysqlcheck.html#option_mysqlcheck_password1)和它后面的密码。如果未指定密码选项，则默认为不发送密码。

    在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码，请使用选项文件。看[第 6.1.2.1 节，“最终用户密码安全指南”](password-security-user.html).

    明确指定没有密码并且[**mysql检查**](mysqlcheck.html)不应该提示输入一个，使用[`--skip-password1`](mysqlcheck.html#option_mysqlcheck_password1)选项。

    [`--密码1`](mysqlcheck.html#option_mysqlcheck_password1)和[`- 密码`](mysqlcheck.html#option_mysqlcheck_password)是同义词[`--skip-password1`](mysqlcheck.html#option_mysqlcheck_password1)和[`--跳过密码`](mysqlcheck.html#option_mysqlcheck_password).

-   [](<>) [`--密码2[=*`pass_val`*]`](mysqlcheck.html#option_mysqlcheck_password2)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因子 2 的密码。此选项的语义类似于[`--密码1`](mysqlcheck.html#option_mysqlcheck_password1);有关详细信息，请参阅该选项的说明。

-   [](<>) [`--密码3[=*`pass_val`*]`](mysqlcheck.html#option_mysqlcheck_password3)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因子 3 的密码。此选项的语义类似于[`--密码1`](mysqlcheck.html#option_mysqlcheck_password1);有关详细信息，请参阅该选项的说明。

-   [](<>) [`- 管道`](mysqlcheck.html#option_mysqlcheck_pipe),`-W`

    [](<>)[](<>)

    在 Windows 上，使用命名管道连接到服务器。此选项仅适用于服务器以[`命名管道`](server-system-variables.html#sysvar_named_pipe)启用系统变量以支持命名管道连接。此外，建立连接的用户必须是由指定的 Windows 组的成员[`named_pipe_full_access_group`](server-system-variables.html#sysvar_named_pipe_full_access_group)系统变量。

-   [](<>) [`--插件目录=*`目录名`*`](mysqlcheck.html#option_mysqlcheck_plugin-dir)

    [](<>)[](<>)

    查找插件的目录。指定此选项，如果[`--default-auth`](mysqlcheck.html#option_mysqlcheck_default-auth)选项用于指定身份验证插件，但[**mysql检查**](mysqlcheck.html)没有找到它。看[第 6.2.17 节，“可插拔身份验证”](pluggable-authentication.html).

-   [](<>) [`--端口=*`端口号`*`](mysqlcheck.html#option_mysqlcheck_port),`-P *`端口号`*`

    [](<>)[](<>)

    对于 TCP/IP 连接，要使用的端口号。

-   [](<>) [`--打印默认值`](mysqlcheck.html#option_mysqlcheck_print-defaults)

    [](<>)[](<>)

    打印程序名称和它从选项文件中获取的所有选项。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--protocol={TCP|SOCKET|管道|内存}`](mysqlcheck.html#option_mysqlcheck_protocol)

    [](<>)[](<>)

    用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时，它很有用。有关允许值的详细信息，请参见[第 4.2.7 节，“连接传输协议”](transport-protocols.html).

-   [](<>) [`- 快的`](mysqlcheck.html#option_mysqlcheck_quick),`-q`

    [](<>)[](<>)

    如果您使用此选项检查表，它会阻止检查扫描行以检查不正确的链接。这是最快的检查方法。

    如果您使用此选项修复表，它会尝试仅修复索引树。这是最快的修复方法。

-   [](<>) [`- 维修`](mysqlcheck.html#option_mysqlcheck_repair),`-r`

    [](<>)[](<>)

    执行可以修复几乎任何东西的修复，除了不唯一的唯一键。

-   [](<>) [`--server-public-key-path=*`文件名`*`](mysqlcheck.html#option_mysqlcheck_server-public-key-path)

    [](<>)[](<>)

    PEM 格式的文件的路径名，其中包含服务器基于 RSA 密钥对的密码交换所需的公钥的客户端副本。此选项适用于通过`sha256_password`要么`cache_sha2_password`身份验证插件。对于未使用这些插件之一进行身份验证的帐户，此选项将被忽略。如果不使用基于 RSA 的密码交换，它也会被忽略，例如客户端使用安全连接连接到服务器的情况。

    如果[`--server-public-key-path=*`文件名`*`](mysqlcheck.html#option_mysqlcheck_server-public-key-path)给出并指定一个有效的公钥文件，它优先于[`--get-server-public-key`](mysqlcheck.html#option_mysqlcheck_get-server-public-key).

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

    有关信息`sha256_password`和`cache_sha2_password`插件，见[第 6.4.1.3 节，“SHA-256 可插入身份验证”](sha256-pluggable-authentication.html)， 和[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) [`--shared-memory-base-name=*`姓名`*`](mysqlcheck.html#option_mysqlcheck_shared-memory-base-name)

    [](<>)[](<>)

    在 Windows 上，用于使用共享内存与本地服务器建立连接的共享内存名称。默认值为`MYSQL`.共享内存名称区分大小写。

    此选项仅适用于服务器以[`共享内存`](server-system-variables.html#sysvar_shared_memory)启用系统变量以支持共享内存连接。

-   [](<>) [`- 无声`](mysqlcheck.html#option_mysqlcheck_silent),`-s`

    [](<>)[](<>)

    静音模式。仅打印错误消息。

-   [](<>) [`--skip-数据库=*`数据库名称`*`](mysqlcheck.html#option_mysqlcheck_skip-database)

    [](<>)[](<>)

    不要在执行的操作中包含命名数据库（区分大小写）[**mysql检查**](mysqlcheck.html).

-   [](<>) [`--socket=*`小路`*`](mysqlcheck.html#option_mysqlcheck_socket),`-S *`小路`*`

    [](<>)[](<>)

    对于连接到`本地主机`，要使用的 Unix 套接字文件，或者在 Windows 上，要使用的命名管道的名称。

    在 Windows 上，此选项仅在服务器以[`命名管道`](server-system-variables.html#sysvar_named_pipe)启用系统变量以支持命名管道连接。此外，建立连接的用户必须是由指定的 Windows 组的成员[`named_pipe_full_access_group`](server-system-variables.html#sysvar_named_pipe_full_access_group)系统变量。

-   [](<>) `--ssl*`

    [](<>)[](<>)

    开头的选项`--ssl`指定是否使用加密连接到服务器并指示在哪里可以找到 SSL 密钥和证书。看[加密连接的命令选项](connection-options.html#encrypted-connection-options).

-   [](<>) [`--ssl-fips-mode={OFF|ON|STRICT}`](mysqlcheck.html#option_mysqlcheck_ssl-fips-mode)

    [](<>)[](<>)

    控制是否在客户端启用 FIPS 模式。这[`--ssl-fips-模式`](mysqlcheck.html#option_mysqlcheck_ssl-fips-mode)选项不同于其他`--ssl-*`xxx`*`选项，因为它不用于建立加密连接，而是影响允许哪些加密操作。看[第 6.8 节，“FIPS 支持”](fips-mode.html).

    这些[`--ssl-fips-模式`](mysqlcheck.html#option_mysqlcheck_ssl-fips-mode)允许的值：

    -   `离开`：禁用 FIPS 模式。

    -   `在`：启用 FIPS 模式。

    -   `严格的`：启用“严格”FIPS 模式。

    笔记

    如果 OpenSSL FIPS 对象模块不可用，则唯一允许的值为[`--ssl-fips-模式`](mysqlcheck.html#option_mysqlcheck_ssl-fips-mode)是`离开`.在这种情况下，设置[`--ssl-fips-模式`](mysqlcheck.html#option_mysqlcheck_ssl-fips-mode)到`在`要么`严格的`导致客户端在启动时产生警告并在非 FIPS 模式下运行。

-   [](<>) [`--表`](mysqlcheck.html#option_mysqlcheck_tables)

    [](<>)[](<>)

    覆盖[`--数据库`](mysqlcheck.html#option_mysqlcheck_databases)要么`-B`选项。选项后面的所有名称参数都被视为表名。

-   [](<>) [`--tls-ciphersuites=*`密码套件列表`*`](mysqlcheck.html#option_mysqlcheck_tls-ciphersuites)

    [](<>)[](<>)

    允许使用 TLSv1.3 的加密连接的密码套件。该值是一个或多个以冒号分隔的密码套件名称的列表。可以为此选项命名的密码套件取决于用于编译 MySQL 的 SSL 库。有关详细信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

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

-   [](<>) [`--tls-版本=*`协议列表`*`](mysqlcheck.html#option_mysqlcheck_tls-version)

    [](<>)[](<>)

    加密连接的允许 TLS 协议。该值是一个或多个逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库。有关详细信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

-   [](<>) [`--use-frm`](mysqlcheck.html#option_mysqlcheck_use-frm)

    [](<>)[](<>)

    对于维修操作`MyISAM`表，从数据字典中获取表结构，这样即使`。我的我`标头已损坏。

-   [](<>) [`--用户=*`用户名`*`](mysqlcheck.html#option_mysqlcheck_user),`-u *`用户名`*`

    [](<>)[](<>)

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

-   [](<>) [`--详细`](mysqlcheck.html#option_mysqlcheck_verbose),`-v`

    [](<>)[](<>)

    详细模式。打印有关程序操作各个阶段的信息。

-   [](<>) [`- 版本`](mysqlcheck.html#option_mysqlcheck_version),`-V`

    [](<>)[](<>)

    显示版本信息并退出。

-   [](<>) [`--write-binlog`](mysqlcheck.html#option_mysqlcheck_write-binlog)

    [](<>)[](<>)

    此选项默认启用，因此[`分析表`](analyze-table.html),[`优化表格`](optimize-table.html)和[`修理台`](repair-table.html)由生成的语句[**mysqlcheck**](mysqlcheck.html)写入二进制日志。使用[`--跳过写入binlog`](mysqlcheck.html#option_mysqlcheck_write-binlog)使`没有写到BINLOG`添加到语句中，使其不被记录。使用[`--跳过写入binlog`](mysqlcheck.html#option_mysqlcheck_write-binlog)当使用二进制日志从备份中恢复时，这些语句不应发送到副本或运行。

-   [](<>) [`--压缩级别=*`数量`*`](mysqlcheck.html#option_mysqlcheck_zstd-compression-level)

    [](<>)[](<>)

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

    有关更多信息，请参阅[第4.2.8节，“连接压缩控制”](connection-compression-control.html).

    这个选项是在MySQL 8.0.18中添加的。
