2.5.4 Linux上使用Oracle提供的RPM软件包安装MySQL
在使用RPM-基于的Linux发行版时,推荐使用Oracle提供的RPM软件包来安装MySQL。对于MySQL Community Edition,有两个获取它们的来源:
-
从MySQL软件仓库:
-
MySQL Yum 仓库(详见第2.5.1节,“使用MySQL Yum 仓库安装MySQL”)。
-
从MySQL SLES 仓库(详见第2.5.3节,“使用MySQL SLES 仓库”)。
-
其他供应商也提供了MySQL的RPM软件包。请注意,这些软件包可能与Oracle构建的软件包不同,包括功能、能力和约定(包括通信设置),并且本手册中的安装说明不一定适用于它们。相反,应该consult the vendor's instructions。
表2.8 MySQL Community Edition RPM软件包
Package Name | Summary |
---|---|
mysql-community-client |
MySQL客户端应用程序和工具 |
mysql-community-client-plugins |
共享插件用于MySQL客户端应用程序 |
mysql-community-common |
服务器和客户端库的公共文件 |
mysql-community-devel |
MySQL 数据库客户端应用程序的开发头文件和库 |
mysql-community-embedded-compat |
MySQL 服务器作为嵌入式库,兼容使用版本18的应用程序 |
mysql-community-icu-data-files |
MySQL 打包的 ICU 数据文件,用于 MySQL 正则表达式 |
mysql-community-libs |
MySQL 数据库客户端应用程序的共享库 |
mysql-community-libs-compat |
之前 MySQL 版本的共享兼容库;只有在平台支持之前 MySQL 版本时才存在 |
mysql-community-server |
数据库服务器和相关工具 |
mysql-community-server-debug |
调试服务器和插件二进制文件 |
mysql-community-test |
MySQL 服务器测试套件 |
mysql-community |
源代码 RPM 看起来类似于 mysql-community-8.4.0-1.el7.src.rpm,取决于选择的操作系统 |
额外的 *debuginfo* RPM | 有多个 debuginfo 包:mysql-community-client-debuginfo、mysql-community-libs-debuginfo、mysql-community-server-debug-debuginfo、mysql-community-server-debuginfo 和 mysql-community-test-debuginfo。 |
表2.9 MySQL Enterprise Edition RPM 软件包
Package Name | Summary |
---|---|
mysql-commercial-backup |
MySQL Enterprise Backup |
mysql-commercial-client |
MySQL 客户端应用程序和工具 |
mysql-commercial-client-plugins |
共享插件 для MySQL 客户端应用程序 |
mysql-commercial-common |
服务器和客户端库的公共文件 |
mysql-commercial-devel |
MySQL 数据库客户端应用程序的开发头文件和库 |
mysql-commercial-embedded-compat |
MySQL 服务器作为嵌入式库,兼容使用版本18的应用程序 |
mysql-commercial-icu-data-files |
MySQL 正则表达式所需的 ICU 数据文件打包 |
mysql-commercial-libs |
MySQL 数据库客户端应用程序的共享库 |
mysql-commercial-libs-compat |
之前 MySQL 版本支持的共享兼容库;只有在平台支持之前 MySQL 版本时才存在。库版本与默认安装的分布式版本相匹配。 |
mysql-commercial-server |
数据库服务器和相关工具 |
mysql-commercial-test |
MySQL 服务器的测试套件 |
额外的*debuginfo*RPM包 | 有多个debuginfo 包: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
distribution
和 arch
值表示了该软件包为哪个 Linux 发行版和处理器类型所编译的。请参阅以下表格,以获取发行版标识符列表:
表2.10 MySQL Linux RPM软件包发行版标识符
Distribution Value | Intended Use |
---|---|
el{version} ,其中 {version} 是 Enterprise Linux 的主要版本号,如 el8 |
EL6(8.0)、EL7、EL8和EL9基于平台(例如 Oracle Linux、Red Hat Enterprise Linux 和 CentOS 对应的版本) |
fc{version} ,其中 {version} 是 Fedora 的主要版本号,如 fc37 |
Fedora 38、39和40 |
sl5 |
SUSE Linux Enterprise Server 15 |
要查看 RPM 软件包中的所有文件(例如 mysql-community-server
),请使用以下命令:
$> rpm -qpl mysql-community-server-version-distribution-arch.rpm
本节剩余部分的讨论仅适用于直接从 Oracle 下载 RPM 软件包,而不是通过 MySQL 仓库安装。
一些软件包之间存在依赖关系。如果您计划安装多个软件包,您可能想下载 RPM 组合 tar 文件,而不是单独下载每个软件包,这样可以避免单独下载每个软件包的麻烦。
在大多数情况下,您需要安装mysql-community-server
、mysql-community-client
、mysql-community-client-plugins
、mysql-community-libs
、mysql-community-icu-data-files
、mysql-community-common
和mysql-community-libs-compat
包,以获取功能齐全的标准MySQL安装。要执行这种标准基本安装,请转到包含所有这些包的文件夹(并且,尽量避免其他类似名称的RPM包),然后输入以下命令:
$> sudo yum install mysql-community-{server,client,client-plugins,icu-data-files,common,libs}-*
将yum替换为zypper以适用于SLES,或者将其替换为dnf以适用于Fedora。
虽然使用高级包管理工具,如yum安装包是非常推荐的,但是用户可以选择直接使用rpm命令来安装包;然而,使用rpm -Uvh命令代替yum install命令将使安装过程更加容易出错,因为可能会遇到依赖性问题。
要只安装客户端程序,可以跳过mysql-community-server
包;输入以下命令:
$> sudo yum install mysql-community-{client,client-plugins,common,libs}-*
将yum替换为zypper以适用于SLES,或者将其替换为dnf以适用于Fedora。
MySQL RPM软件包的标准安装结果在系统目录下创建文件和资源,以下表格显示了这些文件和资源的位置。
表2.11:Linux RPM软件包(来自 MySQL 开发者区)MySQL 安装布局
Files or Resources | Location |
---|---|
客户端程序和脚本 | /usr/bin |
mysqld 服务器 | /usr/sbin |
配置文件 | /etc/my.cnf |
数据目录 | /var/lib/mysql |
错误日志文件 |
RHEL、Oracle Linux、CentOS 或 Fedora 平台: SLES: |
secure_file_priv 的值 |
/var/lib/mysql-files |
System V init 脚本 |
RHEL、Oracle Linux、CentOS 或 Fedora 平台: SLES: |
Systemd 服务 |
RHEL、Oracle Linux、CentOS或Fedora平台: SLES平台: |
PID文件 | /var/run/mysql/mysqld.pid |
套接字 | /var/lib/mysql/mysql.sock |
密钥ring目录 | /var/lib/mysql-keyring |
Unix手册页 | /usr/share/man |
包含文件(头文件) | /usr/include/mysql |
库文件 | /usr/lib/mysql |
其他支持文件(例如错误信息和字符集文件) | /usr/share/mysql |
安装还创建了名为mysql
的用户和名为mysql
的组。
-
使用useradd命令的
-r
和-s /bin/false
选项创建了mysql
用户,以便它不能在您的服务器主机上登录(请参阅创建mysql用户和组以获取详细信息)。要在您的OS中切换到mysql
用户,请使用su命令的--shell=/bin/bash
选项:$> su - mysql --shell=/bin/bash
-
使用旧版本的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,可以使用标准的systemctl(或alternatively,service with the arguments reversed)命令,如stop、start、status和restart来管理MySQL服务器服务。默认情况下,mysqld
服务启用,并且在系统重启时启动。注意,在systemd平台上某些事情可能会不同:例如,改变数据目录的位置可能会导致问题。请参阅第2.5.9节,“使用systemd管理MySQL服务器”以获取更多信息。
在使用 RPM 和 DEB 包进行升级安装时,如果 MySQL 服务器在升级过程中运行,那么 MySQL 服务器将被停止,升级将发生,然后 MySQL 服务器将被重新启动。有一种例外:如果升级同时更改了版本(例如从社区版到商业版或反之),那么 MySQL 服务器将不会被重新启动。
在服务器的初始启动时,以下事情会发生,假设服务器的数据目录为空:
-
服务器被初始化。
-
在数据目录中生成 SSL 证书和密钥文件。
-
validate_password
被安装并启用。 -
创建超级用户账户
'root'@'localhost'
。超级用户的密码被设置并存储在错误日志文件中。要显示它,请使用以下命令(适用于 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
默认情况下被安装。由 validate_password
实现的默认密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且总长度至少为 8 个字符。
如果在安装过程中出现问题,你可能会在错误日志文件/var/log/mysqld.log
中找到 debug 信息。
对于一些 Linux 发行版,可能需要增加对mysqld可用的文件描述符限制。请参阅第 B.3.2.16 节,“File Not Found and Similar Errors”
从多个 MySQL 版本安装客户端库. 可以安装多个客户端库版本,例如在您想要保持与 older 应用程序的兼容性时,这些应用程序链接到之前的库。要安装一个 older 客户端库,请使用 --oldpackage
选项和rpm。例如,在 EL6 系统上安装 mysql-community-libs-5.5
,并且已经安装了 MySQL 8.0 的 libmysqlclient.21
,可以使用以下命令:
$> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
调试包. MySQL Server 的一个特殊变体是使用调试包编译的。它执行调试和内存分配检查,并在服务器运行时生成 trace 文件。要使用该调试版本,请使用 /usr/sbin/mysqld-debug
,而不是作为服务或使用 /usr/sbin/mysqld
。请参阅第 7.9.4 节,“The DBUG Package”,了解可用的调试选项。
默认插件目录是 /usr/lib64/mysql/plugin/debug
,可以使用plugin_ dir
配置。
从源代码SRPM包重建RPMs。MySQL的源代码SRPM包可供下载。它们可以直接使用标准rpmbuild工具链来重建MySQL RPMs。