## 4.1 MySQL 程序概述

MySQL 安装中有许多不同的程序。本节简要概述了它们。后面的部分提供了对每一个的更详细的描述，除了 NDB Cluster 程序。每个程序的描述都指明了它的调用语法和它支持的选项。[第 23.5 节，“NDB 集群程序”](mysql-cluster-programs.html)，描述特定于 NDB Cluster 的程序。

大多数 MySQL 发行版包括所有这些程序，除了那些特定于平台的程序。（例如，Windows 上不使用服务器启动脚本。）例外是 RPM 发行版更专业。服务器有一个 RPM，客户端程序有另一个 RPM，依此类推。如果您似乎缺少一个或多个程序，请参阅[第2章，*安装和升级 MySQL*](installing.html), 有关分布类型及其包含内容的信息。可能是您的发行版不包含所有程序，并且您需要安装额外的软件包。

每个 MySQL 程序都有许多不同的选项。大多数程序提供一个`- 帮助`选项，您可以使用它来获取程序不同选项的描述。例如，尝试[**mysql --帮助**](mysql.html).

您可以通过在命令行或选项文件中指定选项来覆盖 MySQL 程序的默认选项值。看[第 4.2 节，“使用 MySQL 程序”](programs-using.html), 有关调用程序和指定程序选项的一般信息。

MySQL服务器，[**mysqld**](mysqld.html), 是在 MySQL 安装中完成大部分工作的主程序。服务器附带几个相关脚本，可帮助您启动和停止服务器：

-   [](<>) [**mysqld**](mysqld.html)

    SQL 守护进程（即 MySQL 服务器）。要使用客户端程序，[**mysqld**](mysqld.html)必须运行，因为客户端通过连接到服务器来访问数据库。看[第 4.3.1 节，“mysqld - MySQL 服务器”](mysqld.html).

-   [](<>) [**mysqld\_安全的**](mysqld-safe.html)

    服务器启动脚本。[**mysqld\_安全的**](mysqld-safe.html)尝试开始[**mysqld**](mysqld.html).看[第 4.3.2 节，“mysqld\_安全——MySQL 服务器启动脚本”](mysqld-safe.html).

-   [](<>) [**mysql.server**](mysql-server.html)

    服务器启动脚本。此脚本用于使用 System V 样式运行目录的系统，其中包含为特定运行级别启动系统服务的脚本。它调用[**mysqld\_安全的**](mysqld-safe.html)启动 MySQL 服务器。看[第 4.3.3 节，“mysql.server - MySQL 服务器启动脚本”](mysql-server.html).

-   [](<>) [**mysqld\_多**](mysqld-multi.html)

    可以启动或停止系统上安装的多个服务器的服务器启动脚本。看[第 4.3.4 节，“mysqld_multi — 管理多个 MySQL 服务器”](mysqld-multi.html).

    在 MySQL 安装或升级期间有几个程序执行设置操作：

-   [](<>) [**补偿\_呃**](comp-err.html)

    该程序在 MySQL 构建/安装过程中使用。它从错误源文件编译错误消息文件。看[第 4.4.1 节，“补偿\_err - 编译 MySQL 错误消息文件”](comp-err.html).

-   [](<>) [**mysql\_安全的\_安装**](mysql-secure-installation.html)

    该程序使您能够提高 MySQL 安装的安全性。看[第 4.4.2 节，“mysql\_安全的\_安装——提高 MySQL 安装安全”](mysql-secure-installation.html).

-   [](<>) [**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)

    如果这些文件丢失，该程序会创建支持安全连接所需的 SSL 证书和密钥文件以及 RSA 密钥对文件。创建的文件[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)可用于使用 SSL 或 RSA 的安全连接。看[第 4.4.3 节，“mysql_ssl_rsa_setup — 创建 SSL/RSA 文件”](mysql-ssl-rsa-setup.html).

-   [](<>) [**mysql\_资讯\_到\_sql**](mysql-tzinfo-to-sql.html)

    该程序将时区表加载到`mysql`使用主机系统 zoneinfo 数据库（描述时区的文件集）的内容的数据库。看[第 4.4.4 节，“mysql\_资讯\_到\_sql — 加载时区表”](mysql-tzinfo-to-sql.html).

-   [](<>) [**mysql\_升级**](mysql-upgrade.html)

    在 MySQL 8.0.16 之前，此程序在 MySQL 升级操作后使用。它使用在较新版本的 MySQL 中所做的任何更改来更新授权表，并检查表的不兼容性并在必要时修复它们。看[第 4.4.5 节，“mysql_upgrade — 检查和升级 MySQL 表”](mysql-upgrade.html).

    从 MySQL 8.0.16 开始，MySQL 服务器执行之前由[**mysql\_升级**](mysql-upgrade.html)（有关详细信息，请参阅[第 2.11.3 节，“MySQL 升级过程升级了什么”](upgrading-what-is-upgraded.html)）。

    连接到 MySQL 服务器的 MySQL 客户端程序：

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

-   [](<>) [**mysql**](mysql.html)

    用于交互式输入 SQL 语句或以批处理模式从文件执行它们的命令行工具。看[第 4.5.1 节，“mysql - MySQL 命令行客户端”](mysql.html).

-   [](<>) [**mysql管理员**](mysqladmin.html)

    执行管理操作的客户端，例如创建或删除数据库、重新加载授权表、将表刷新到磁盘以及重新打开日志文件。[**mysql管理员**](mysqladmin.html)还可用于从服务器检索版本、进程和状态信息。看[第 4.5.2 节，“mysqladmin - MySQL 服务器管理程序”](mysqladmin.html).

-   [](<>) [**mysql检查**](mysqlcheck.html)

    检查、修复、分析和优化表的表维护客户端。看[第 4.5.3 节，“mysqlcheck - 一个表维护程序”](mysqlcheck.html).

-   [](<>) [**mysql转储**](mysqldump.html)

    将 MySQL 数据库以 SQL、文本或 XML 格式转储到文件中的客户端。看[第 4.5.4 节，“mysqldump - 数据库备份程序”](mysqldump.html).

-   [](<>) [**mysql导入**](mysqlimport.html)

    使用将文本文件导入其各自表的客户端[`加载数据`](load-data.html).看[第 4.5.5 节，“mysqlimport - 数据导入程序”](mysqlimport.html).

-   [](<>) [**mysql泵**](mysqlpump.html)

    将 MySQL 数据库作为 SQL 转储到文件中的客户端。看[第 4.5.6 节，“mysqlpump - 数据库备份程序”](mysqlpump.html).

-   [](<>) **mysqlsh**

    MySQL Shell 是 MySQL 服务器的高级客户端和代码编辑器。看[MySQL 外壳 8.0](https://dev.mysql.com/doc/mysql-shell/8.0/en/).除了提供的 SQL 功能外，类似于[**mysql**](mysql.html), MySQL Shell 为 JavaScript 和 Python 提供脚本功能，并包含用于使用 MySQL 的 API。X DevAPI 使您能够处理关系数据和文档数据，请参阅[第 20 章，*使用 MySQL 作为文档存储*](document-store.html).AdminAPI 使您能够使用 InnoDB Cluster，请参阅[MySQL 管理API](https://dev.mysql.com/doc/mysql-shell/8.0/en/admin-api-userguide.html).

-   [](<>) [**mysqlshow**](mysqlshow.html)

    显示有关数据库、表、列和索引的信息的客户端。看[第 4.5.7 节，“mysqlshow - 显示数据库、表和列信息”](mysqlshow.html).

-   [](<>) [**mysqlslap**](mysqlslap.html)

    一个客户端，旨在模拟 MySQL 服务器的客户端负载并报告每个阶段的时间。它就像多个客户端正在访问服务器一样工作。看[第 4.5.8 节，“mysqlslap - 负载仿真客户端”](mysqlslap.html).

    MySQL 管理和实用程序：

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

-   [](<>) [**无校验和**](innochecksum.html)

    一个离线`InnoDB`离线文件校验和实用程序。看[第 4.6.2 节，“innochecksum - 离线 InnoDB 文件校验和实用程序”](innochecksum.html).

-   [](<>) [**米萨姆\_文件转储**](myisam-ftdump.html)

    显示全文索引信息的实用程序`MyISAM`表。看[第 4.6.3 节，“myisam_ftdump — 显示全文索引信息”](myisam-ftdump.html).

-   [](<>) [**迈萨姆奇克**](myisamchk.html)

    用于描述、检查、优化和修复的实用程序`MyISAM`表。看[第 4.6.4 节，“myisamchk - MyISAM 表维护实用程序”](myisamchk.html).

-   [](<>) [**我的日志**](myisamlog.html)

    处理内容的实用程序`MyISAM`日志文件。看[第 4.6.5 节，“myisamlog - 显示 MyISAM 日志文件内容”](myisamlog.html).

-   [](<>) [**myisampack**](myisampack.html)

    一个压缩工具`MyISAM`表以生成较小的只读表。看[第 4.6.6 节，“myisampack - 生成压缩的只读 MyISAM 表”](myisampack.html).

-   [](<>) [**mysql\_配置\_编辑**](mysql-config-editor.html)

    一个实用程序，使您能够将身份验证凭据存储在名为的安全加密登录路径文件中`.mylogin.cnf`.看[第 4.6.7 节，“mysql\_配置\_编辑器 — MySQL 配置实用程序”](mysql-config-editor.html).

-   [**mysql\_迁移\_钥匙圈**](mysql-migrate-keyring.html)

    [](<>)

    用于在一个密钥环组件和另一个密钥环组件之间迁移密钥的实用程序。看[第 4.6.8 节，“mysql\_迁移\_keyring — Keyring 密钥迁移实用程序”](mysql-migrate-keyring.html).

-   [](<>) [**mysqlbinlog**](mysqlbinlog.html)

    用于从二进制日志中读取语句的实用程序。二进制日志文件中包含的已执行语句的日志可用于帮助从崩溃中恢复。看[第 4.6.9 节，“mysqlbinlog - 处理二进制日志文件的实用程序”](mysqlbinlog.html).

-   [](<>) [**mysqldumpslow**](mysqldumpslow.html)

    用于读取和总结慢查询日志内容的实用程序。看[第 4.6.10 节，“mysqldumpslow - 总结慢查询日志文件”](mysqldumpslow.html).

    MySQL 程序开发实用程序：

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

-   [**mysql\_配置**](mysql-config.html)

    生成编译 MySQL 程序时所需的选项值的 shell 脚本。看[第 4.7.1 节，“mysql_config - 编译客户端的显示选项”](mysql-config.html).

-   [](<>) [**我的\_打印\_默认值**](my-print-defaults.html)

    显示选项文件的选项组中存在哪些选项的实用程序。看[第 4.7.2 节，“我的\_打印\_默认值 - 来自选项文件的显示选项”](my-print-defaults.html).

    其他实用程序：

-   [](<>) [**lz4\_解压**](lz4-decompress.html)

    一个解压工具[**mysql泵**](mysqlpump.html)使用 LZ4 压缩创建的输出。看[第 4.8.1 节，“lz4_decompress — 解压 mysqlpump LZ4-压缩输出”](lz4-decompress.html).

-   [](<>) [**错误**](perror.html)

    显示系统或 MySQL 错误代码含义的实用程序。看[第 4.8.2 节，“perror - 显示 MySQL 错误消息信息”](perror.html).

-   [](<>) [**zlib\_解压**](zlib-decompress.html)

    一个解压工具[**mysql泵**](mysqlpump.html)使用 ZLIB 压缩创建的输出。看[第 4.8.3 节，“zlib_decompress — 解压 mysqlpump ZLIB 压缩输出”](zlib-decompress.html).

    甲骨文公司还提供[MySQL 工作台](workbench.html)GUI 工具，用于管理 MySQL 服务器和数据库，创建、执行和评估查询，以及从其他关系数据库管理系统迁移模式和数据以与 MySQL 一起使用。

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

使用 MySQL 客户端/服务器库与服务器通信的 MySQL 客户端程序使用以下环境变量。

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

| 环境变量 | 意义 |
| ---- | --- |
| `MYSQL_UNIX_PORT` | 默认的 Unix 套接字文件；用于连接到`本地主机` |
| `MYSQL_TCP_PORT` | 默认端口号；用于 TCP/IP 连接 |
| `MYSQL_DEBUG` | 调试时的调试跟踪选项 |
| `TMPDIR` | 创建临时表和文件的目录 |

有关 MySQL 程序使用的环境变量的完整列表，请参阅[第 4.9 节，“环境变量”](environment-variables.html).
