### 2.5.4 使用 Oracle 的 RPM 包在 Linux 上安装 MySQL

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

在基于 RPM 的 Linux 发行版上安装 MySQL 的推荐方法是使用 Oracle 提供的 RPM 包。对于 MySQL 的社区版，有两个获取它们的来源：

-   从 MySQL 软件存储库：

    -   MySQL Yum 存储库（请参阅[第 2.5.1 节，“使用 MySQL Yum 存储库在 Linux 上安装 MySQL”](linux-installation-yum-repo.html)详情）。

    -   MySQL SLES 存储库（请参阅[第 2.5.3 节，“使用 MySQL SLES 存储库在 Linux 上安装 MySQL”](linux-installation-sles-repo.html)详情）。

-   来自[下载 MySQL 社区服务器](https://dev.mysql.com/downloads/mysql/)页面中的[MySQL 开发者专区](https://dev.mysql.com/).

笔记

MySQL 的 RPM 发行版也由其他供应商提供。请注意，它们可能在特性、功能和约定（包括通信设置）上与 Oracle 构建的不同，并且本手册中的安装说明不一定适用于它们。应参考供应商的说明。

#### MySQL RPM 软件包

[](<>)

**表 2.9 MySQL 社区版的 RPM 包**

| 包裹名字 | 概括 |
| ---- | --- |
| `mysql-社区-客户端` | MySQL 客户端应用程序和工具 |
| `mysql-community-common` | 服务器和客户端库的通用文件 |
| `mysql-社区开发` | MySQL 数据库客户端应用程序的开发头文件和库 |
| `mysql-community-embedded-compat` | MySQL 服务器作为嵌入式库，与使用该库版本 18 的应用程序兼容 |
| `mysql 社区库` | MySQL 数据库客户端应用程序的共享库 |
| `mysql-community-libs-compat` | 以前 MySQL 安装的共享兼容性库 |
| `mysql-社区服务器` | 数据库服务器及相关工具 |
| `mysql-社区-服务器-调试` | 调试服务器和插件二进制文件 |
| `mysql-社区测试` | MySQL 服务器的测试套件 |
| `mysql 社区` | 源代码 RPM 看起来类似于 mysql-community-8.0.28-1.el7.src.rpm，具体取决于所选的操作系统 |
| 额外的\*调试信息\*RPM | 有几种`调试信息`包：mysql-community-client-debuginfo、mysql-community-libs-debuginfo、mysql-community-server-debug-debuginfo、mysql-community-server-debuginfo和mysql-community-test-debuginfo。 |

[](<>)

**表 2.10 MySQL 企业版的 RPM 包**

| 包裹名字 | 概括 |
| ---- | --- |
| `mysql-商业备份` | MySQL 企业备份（在 8.0.11 中添加） |
| `mysql-商业客户端` | MySQL 客户端应用程序和工具 |
| `mysql-商业通用` | 服务器和客户端库的通用文件 |
| `mysql-商业开发` | MySQL 数据库客户端应用程序的开发头文件和库 |
| `mysql-商业-嵌入式-兼容` | MySQL 服务器作为嵌入式库，与使用该库版本 18 的应用程序兼容 |
| `mysql-商业库` | MySQL 数据库客户端应用程序的共享库 |
| `mysql-商业-libs-compat` | 以前 MySQL 安装的共享兼容性库；库的版本与您使用的发行版默认安装的库的版本相匹配 |
| `mysql-商业服务器` | 数据库服务器及相关工具 |
| `mysql-商业测试` | MySQL 服务器的测试套件 |
| 额外的\*调试信息\*RPM | 有几种`调试信息`包：mysql-commercial-client-debuginfo、mysql-commercial-libs-debuginfo、mysql-commercial-server-debug-debuginfo、mysql-commercial-server-debuginfo和mysql-commercial-test-debuginfo。 |

RPM 的全名具有以下语法：

```
packagename-version-distribution-arch.rpm
```

这*`分配`*和*`拱`*值表示 Linux 发行版和为其构建包的处理器类型。有关分发标识符的列表，请参见下表：

[](<>)

**表 2.11 MySQL Linux RPM 包分发标识符**

| 分配价值 | 有可能的使用 |
| ---- | ------ |
| 埃尔*`{版本}`*在哪里*`{版本}`*是主要的 Enterprise Linux 版本，例如`el8` | 基于EL6、EL7、EL8的平台（如Oracle Linux、Red Hat Enterprise Linux、CentOS的对应版本） |
| fc*`{版本}`*在哪里*`{版本}`*是 Fedora 的主要版本，例如`fc34` | Fedora 34 和 35 |
| `sles12` | SUSE Linux 企业服务器 12 |

查看 RPM 包中的所有文件（例如，`mysql-社区服务器`)，使用以下命令：

```
$> rpm -qpl mysql-community-server-version-distribution-arch.rpm
```

*本节其余部分的讨论仅适用于使用直接从 Oracle 下载的 RPM 包的安装过程，而不是通过 MySQL 存储库。*

一些包之间存在依赖关系。如果您计划安装许多软件包，您可能希望下载 RPM 包**柏油**文件，其中包含上面列出的所有 RPM 包，因此您无需单独下载它们。

在大多数情况下，您需要安装`mysql-社区服务器`,`mysql-社区-客户端`,`mysql 社区库`,`mysql-community-common`， 和`mysql-community-libs-compat`包以获得功能性的标准 MySQL 安装。要执行这种标准的基本安装，请转到包含所有这些软件包的文件夹（最好不要有其他具有相似名称的 RPM 软件包），然后发出以下命令：

```
$> sudo yum install mysql-community-{server,client,common,libs}-*
```

代替**百胜**和**齐珀**对于 SLES，并与**dnf**对于 Fedora。

虽然最好使用高级包管理工具，例如**百胜**安装软件包，喜欢直接的用户**转数**命令可以替换**百胜安装**命令与**转 -Uvh**命令;然而，使用**转 -Uvh**相反，由于安装过程可能遇到的潜在依赖性问题，安装过程更容易失败。

要仅安装客户端程序，您可以跳过`mysql-社区服务器`在您要安装的软件包列表中；发出以下命令：

```
$> sudo yum install mysql-community-{client,common,libs}-*
```

代替**百胜**和**齐珀**对于 SLES，并与**dnf**对于 Fedora。

使用 RPM 包的 MySQL 标准安装会导致在系统目录下创建文件和资源，如下表所示。

[](<>)

**表 2.12 MySQL 开发者专区的 Linux RPM 包的 MySQL 安装布局**

| 文件或资源 | 地点 |
| ----- | --- |
| 客户端程序和脚本 | `/usr/bin` |
| [**mysqld**](mysqld.html)服务器 | `/usr/sbin` |
| 配置文件 | `/etc/my.cnf` |
| 数据目录 | `/var/lib/mysql` |
| 错误日志文件 | 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台：`/var/log/mysqld.log`<br/><br/>对于 SLES：`/var/log/mysql/mysqld.log` |
| 的价值[`secure_file_priv`](server-system-variables.html#sysvar_secure_file_priv) | `/var/lib/mysql 文件` |
| System V 初始化脚本 | 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台：`/etc/init.d/mysqld`<br/><br/>对于 SLES：`/etc/init.d/mysql` |
| 系统化服务 | 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台：`mysqld`<br/><br/>对于 SLES：`mysql` |
| pid文件 | `/var/run/mysql/mysqld.pid` |
| 插座 | `/var/lib/mysql/mysql.sock` |
| 密钥环目录 | `/var/lib/mysql-keyring` |
| Unix 手册页 | `/usr/share/man` |
| 包含（头）文件 | `/usr/include/mysql` |
| 图书馆 | `/usr/lib/mysql` |
| 其他支持文件（例如，错误消息和字符集文件） | `/usr/share/mysql` |

安装过程还会创建一个名为`mysql`和一个名为`mysql`系统上。

笔记

使用旧包安装以前版本的 MySQL 可能会创建一个名为`/usr/my.cnf`.强烈建议您检查文件的内容并将所需的设置迁移到文件中`/etc/my.cnf`文件，然后删除`/usr/my.cnf`.

MySQL 不会在安装过程结束时自动启动。对于 Red Hat Enterprise Linux、Oracle Linux、CentOS 和 Fedora 系统，使用以下命令启动 MySQL：

```
$> systemctl start mysqld
```

对于 SLES 系统，命令相同，但服务名称不同：

```
$> systemctl start mysql
```

如果操作系统启用了 systemd，则标准**系统控制**（或者，**服务**参数颠倒）命令，例如**停止**,**开始**,**状态**， 和[**重新开始**](restart.html)应该用于管理 MySQL 服务器服务。这`mysqld`服务默认启用，并在系统重新启动时启动。请注意，某些事情在 systemd 平台上可能会有所不同：例如，更改数据目录的位置可能会导致问题。看[第 2.5.9 节，“使用 systemd 管理 MySQL 服务器”](using-systemd.html)了解更多信息。

在使用 RPM 和 DEB 包进行升级安装期间，如果 MySQL 服务器在升级时正在运行，则 MySQL 服务器会停止，升级会发生，并且 MySQL 服务器会重新启动。一个例外：如果版本在升级过程中也发生了变化（例如社区到商业，反之亦然），那么 MySQL 服务器不会重新启动。

在服务器的初始启动时，假设服务器的数据目录为空，会发生以下情况：

-   服务器已初始化。

-   在数据目录中生成 SSL 证书和密钥文件。

-   [`验证密码`](validate-password.html)已安装并启用。

-   超级用户帐户`'根'@'本地主机'`被建造。超级用户的密码已设置并存储在错误日志文件中。要显示它，请对 RHEL、Oracle Linux、CentOS 和 Fedora 系统使用以下命令：

    ```
    $> sudo grep 'temporary password' /var/log/mysqld.log
    ```

    对 SLES 系统使用以下命令：

    ```
    $> sudo grep 'temporary password' /var/log/mysql/mysqld.log
    ```

    下一步是使用生成的临时密码登录并为超级用户帐户设置自定义密码：


```
$> mysql -uroot -p
```

```
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
```

笔记

[`验证密码`](validate-password.html)默认安装。实现的默认密码策略`验证密码`要求密码至少包含 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符，并且密码总长度至少为 8 个字符。

如果在安装过程中出现问题，您可能会在错误日志文件中找到调试信息`/var/log/mysqld.log`.

对于某些 Linux 发行版，可能需要增加对可用文件描述符数量的限制[**mysqld**](mysqld.html).看[第 B.3.2.16 节，“找不到文件和类似错误”](not-enough-file-handles.html)

**从多个 MySQL 版本安装客户端库。**可以安装多个客户端库版本，例如在您希望与链接到先前库的旧应用程序保持兼容性的情况下。要安装较旧的客户端库，请使用`--oldpackage`选项**转数**.例如，要安装`mysql-community-libs-5.5`在具有`libmysqlclient.21`从 MySQL 8.0 开始，使用如下命令：

```
$> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
```

**调试包。**MySQL 服务器的一个特殊变体，使用[调试包](dbug-package.html)已包含在服务器 RPM 包中。它执行调试和内存分配检查，并在服务器运行时生成跟踪文件。要使用该调试版本，请使用以下命令启动 MySQL`/usr/sbin/mysqld-调试`，而不是将其作为服务启动或使用`/usr/sbin/mysqld`.看[第 5.9.4 节，“DBUG 包”](dbug-package.html)对于您可以使用的调试选项。

笔记

调试版本的默认插件目录从`/usr/lib64/mysql/plugin`到`/usr/lib64/mysql/plugin/debug`在 MySQL 8.0.4 中。以前需要改[`插件目录`](server-system-variables.html#sysvar_plugin_dir)到`/usr/lib64/mysql/plugin/debug`用于调试构建。

**从源 SRPM 重建 RPM。**MySQL 的源代码 SRPM 包可供下载。它们可以按原样使用标准重建 MySQL RPM**rpmbuild**工具链。
