在基于 RPM 的 Linux 发行版上安装 MySQL 的推荐方法是使用 Oracle 提供的 RPM 包。有两个来源可以获取它们,用于 MySQL 社区版
从 MySQL 软件存储库
MySQL Yum 存储库(有关详细信息,请参阅 第 2.5.1 节,“使用 MySQL Yum 存储库在 Linux 上安装 MySQL”)。
MySQL SLES 存储库(有关详细信息,请参阅 第 2.5.3 节,“使用 MySQL SLES 存储库”)。
从 下载 MySQL 社区服务器 页面在 MySQL 开发者专区 中。
MySQL 的 RPM 发行版也由其他供应商提供。请注意,它们可能在功能、能力和约定(包括通信设置)方面与 Oracle 构建的版本不同,并且本手册中的安装说明不一定适用于它们。应改为咨询供应商的说明。
MySQL RPM 包
表 2.8 MySQL 社区版的 RPM 包
包名称 | 摘要 |
---|---|
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 对 MySQL 正则表达式所需的 ICU 数据文件的打包 |
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-9.0.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 企业版的 RPM 包
包名称 | 摘要 |
---|---|
mysql-commercial-backup |
MySQL 企业版备份 |
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 对 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 包发行版标识符
发行版值 | 预期用途 |
---|---|
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 文件,其中包含上面列出的所有 RPM 包,这样您就不必单独下载它们。
在大多数情况下,您需要安装 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}-*
对于 SLES,请将 yum 替换为 zypper,对于 Fedora,请将 yum 替换为 dnf。
虽然使用 yum 之类的更高级包管理工具来安装包是首选,但喜欢使用直接的 rpm 命令的用户可以使用 rpm -Uvh 命令替换 yum install 命令;但是,使用 rpm -Uvh 而不是 yum install 会使安装过程更容易失败,因为安装过程可能会遇到潜在的依赖关系问题。
要仅安装客户端程序,您可以在要安装的包列表中跳过 mysql-community-server
;发出以下命令
$> sudo yum install mysql-community-{client,client-plugins,common,libs}-*
对于 SLES,请将 yum 替换为 zypper,对于 Fedora,请将 yum 替换为 dnf。
使用 RPM 包安装 MySQL 时,系统目录下会创建以下文件和资源,如以下表格所示。
表 2.11 MySQL Developer Zone 提供的 Linux RPM 包的 MySQL 安装布局
文件或资源 | 位置 |
---|---|
客户端程序和脚本 | /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 初始化脚本 | 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台: 对于 SLES: |
Systemd 服务 | 对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台: 对于 SLES: |
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
的组。
使用 useradd 命令的
-r
和-s /bin/false
选项创建mysql
用户,因此该用户没有登录到服务器主机的权限(有关详细信息,请参阅 创建 mysql 用户和组)。要在操作系统上切换到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(或者使用参数反转的 service)命令(例如,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
中找到调试信息。
对于某些 Linux 发行版,可能需要增加 mysqld 可用的文件描述符数量限制。请参阅 第 B.3.2.16 节“找不到文件和类似错误”
从多个 MySQL 版本安装客户端库。 可以安装多个客户端库版本,例如,如果您想保持与链接到之前库的旧应用程序的兼容性。要安装旧的客户端库,请对 rpm 使用 --oldpackage
选项。例如,要在安装了来自 MySQL 8.0 的 libmysqlclient.21
的 EL6 系统上安装 mysql-community-libs-5.5
,请使用类似以下的命令
$> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
调试包。 服务器 RPM 包中包含了使用 调试包 编译的 MySQL 服务器的特殊变体。它执行调试和内存分配检查,并在服务器运行时生成跟踪文件。要使用该调试版本,请使用 /usr/sbin/mysqld-debug
启动 MySQL,而不是将其作为服务启动或使用 /usr/sbin/mysqld
启动。有关可使用的调试选项,请参阅 第 7.9.4 节“DBUG 包”。
默认插件目录为 /usr/lib64/mysql/plugin/debug
,并且可以通过 plugin_dir
配置。
从源 SRPM 重新构建 RPM。 可以下载 MySQL 的源代码 SRPM 包。可以使用它们来使用标准的 rpmbuild 工具链重新构建 MySQL RPM。