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

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

笔记

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服务器 /usr/sbin
配置文件 /etc/my.cnf
数据目录 /var/lib/mysql
错误日志文件 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台:/var/log/mysqld.log

对于 SLES:/var/log/mysql/mysqld.log
的价值secure_file_priv /var/lib/mysql 文件
System V 初始化脚本 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台:/etc/init.d/mysqld

对于 SLES:/etc/init.d/mysql
系统化服务 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台:mysqld

对于 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,则标准系统控制(或者,服务参数颠倒)命令,例如停止,开始,状态, 和重新开始应该用于管理 MySQL 服务器服务。这mysqld服务默认启用,并在系统重新启动时启动。请注意,某些事情在 systemd 平台上可能会有所不同:例如,更改数据目录的位置可能会导致问题。看第 2.5.9 节,“使用 systemd 管理 MySQL 服务器”了解更多信息。

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

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

  • 服务器已初始化。

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

  • 验证密码已安装并启用。

  • 超级用户帐户'根'@'本地主机'被建造。超级用户的密码已设置并存储在错误日志文件中。要显示它,请对 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!';

笔记

验证密码默认安装。实现的默认密码策略验证密码要求密码至少包含 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符,并且密码总长度至少为 8 个字符。

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

对于某些 Linux 发行版,可能需要增加对可用文件描述符数量的限制mysqld.看第 B.3.2.16 节,“找不到文件和类似错误”

从多个 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 服务器的一个特殊变体,使用调试包已包含在服务器 RPM 包中。它执行调试和内存分配检查,并在服务器运行时生成跟踪文件。要使用该调试版本,请使用以下命令启动 MySQL/usr/sbin/mysqld-调试,而不是将其作为服务启动或使用/usr/sbin/mysqld.看第 5.9.4 节,“DBUG 包”对于您可以使用的调试选项。

笔记

调试版本的默认插件目录从/usr/lib64/mysql/plugin/usr/lib64/mysql/plugin/debug在 MySQL 8.0.4 中。以前需要改插件目录/usr/lib64/mysql/plugin/debug用于调试构建。

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