在基于 RPM 的 Linux 发行版上安装 MySQL 的推荐方法是使用 Oracle 提供的 RPM 包。对于 MySQL Community Edition,有两个获取它们的来源:
来自 MySQL 软件存储库:
MySQL Yum 存储库(有关详细信息,请参阅 第 2.5.1 节“使用 MySQL Yum 存储库在 Linux 上安装 MySQL”)。
MySQL SLES 存储库(有关详细信息,请参阅 第 2.5.4 节“使用 MySQL SLES 存储库在 Linux 上安装 MySQL”)。
MySQL 的 RPM 发行版也由其他供应商提供。请注意,它们在特性、功能和约定(包括通信设置)方面可能与 Oracle 构建的不同,并且本手册中的安装说明不一定适用于它们。相反,应参考供应商的说明。
如果您的系统上运行着这样的第三方 MySQL 发行版,并且现在想使用从 MySQL 开发人员专区下载的 RPM 包迁移到 Oracle 的发行版,请参阅下面的与其他供应商的 RPM 包的兼容性。但是,首选的迁移方法是使用 MySQL Yum 存储库或 MySQL SLES 存储库。
下表列出了 MySQL 的 RPM 包:
表 2.9 MySQL Community Edition 的 RPM 包
包裹名字 | 概括 |
---|---|
mysql-community-server |
数据库服务器及相关工具 |
mysql-community-client |
MySQL 客户端应用程序和工具 |
mysql-community-common |
服务器和客户端库的通用文件 |
mysql-community-devel |
MySQL 数据库客户端应用程序的开发头文件和库 |
mysql-community-libs |
MySQL 数据库客户端应用程序的共享库 |
mysql-community-libs-compat |
以前 MySQL 安装的共享兼容性库 |
mysql-community-embedded |
MySQL嵌入式库 |
mysql-community-embedded-devel |
MySQL 的开发头文件和库作为可嵌入库 |
mysql-community-test |
MySQL 服务器的测试套件 |
表 2.10 MySQL 企业版的 RPM 包
包裹名字 | 概括 |
---|---|
mysql-commercial-server |
数据库服务器及相关工具 |
mysql-commercial-client |
MySQL 客户端应用程序和工具 |
mysql-commercial-common |
服务器和客户端库的通用文件 |
mysql-commercial-devel |
MySQL 数据库客户端应用程序的开发头文件和库 |
mysql-commercial-libs |
MySQL 数据库客户端应用程序的共享库 |
mysql-commercial-libs-compat |
以前 MySQL 安装的共享兼容性库 |
mysql-commercial-embedded |
MySQL嵌入式库 |
mysql-commercial-embedded-devel |
MySQL 的开发头文件和库作为可嵌入库 |
mysql-commercial-test |
MySQL 服务器的测试套件 |
RPM 的全名具有以下语法:
packagename-version-distribution-arch.rpm
和值指示 Linux 发行版distribution
和
arch
构建包所针对的处理器类型。有关分发标识符的列表,请参见下表:
表 2.11 MySQL Linux RPM 包分发标识符
分配值 | 有可能的使用 |
---|---|
el{version} 其中
{version} 是主要的 Enterprise Linux 版本,例如el8 |
基于EL6、EL7、EL8、EL9的平台(例如对应版本的Oracle Linux、Red Hat Enterprise Linux、CentOS) |
sles12 |
SUSE Linux 企业服务器 12 |
要查看 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-libs
、
mysql-community-common
和
mysql-community-libs-compat
包以获得功能性的标准 MySQL 安装。要执行此类标准的基本安装,请转至包含所有这些包的文件夹(最好不要包含具有相似名称的其他 RPM 包),并针对
Red Hat Enterprise Linux/Oracle Linux/CentOS以外的平台发出以下命令:
$> sudo yum install mysql-community-{server,client,common,libs}-*
对于 SLES, 将yum 替换为zypper 。
对于 Red Hat Enterprise Linux/Oracle Linux/CentOS 系统:
$> sudo yum install mysql-community-{server,client,common,libs}-* mysql-5.*
虽然最好使用像yum这样的高级包管理工具来安装包,但更喜欢直接rpm命令的用户可以用rpm -Uvh命令替换 yum install命令;但是,使用rpm -Uvh 反而会使安装过程更容易失败,因为安装过程可能会遇到潜在的依赖性问题。
要仅安装客户端程序,您可以跳过
mysql-community-server
要安装的软件包列表;为Red Hat Enterprise Linux/Oracle Linux/CentOS
以外的平台发出以下命令
:
$> sudo yum install mysql-community-{client,common,libs}-*
对于 SLES, 将yum 替换为zypper 。
对于 Red Hat Enterprise Linux/Oracle Linux/CentOS 系统:
$> sudo yum install mysql-community-{client,common,libs}-* mysql-5.*
使用 RPM 包的 MySQL 标准安装会导致在系统目录下创建文件和资源,如下表所示。
表 2.12 MySQL 开发人员专区的 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: |
系统服务 |
对于 RHEL、Oracle Linux、CentOS 或 Fedora 平台:
对于 SLES: |
文件 | /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:
$> sudo service mysqld start
对于SLES系统,命令相同,只是服务名称不同:
$> sudo service mysql start
如果操作系统启用了 systemd,
则应使用标准服务命令(例如
stop、start、
status和restart )来管理 MySQL 服务器服务。该
mysqld
服务默认启用,并在系统重启时启动。请注意,某些事情在 systemd 平台上可能会有所不同:例如,更改数据目录的位置可能会导致问题。有关更多信息,请参阅
第 2.5.10 节,“使用 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
要求密码至少包含1个大写字母、1个小写字母、1个数字和1个特殊字符,密码总长度至少为8个字符。
如果在安装期间出现问题,您可能会在错误日志文件中找到调试信息
/var/log/mysqld.log
。
对于某些 Linux 发行版,可能需要增加对mysqld 可用的文件描述符数量的限制 。请参见 第 B.3.2.16 节,“未找到文件和类似错误”
与其他供应商的 RPM 包的兼容性。
如果您已经从您的 Linux 发行版的本地软件存储库安装了 MySQL 包,那么最好使用您平台的包管理系统(yum、dnf或
zypper)从 Oracle 安装新的、直接下载的包,如上所述. 该命令用新包替换旧包,以确保旧应用程序与新安装的兼容性;例如,旧
mysql-libs
包被替换为
mysql-community-libs-compat
包,它为使用旧 MySQL 安装的应用程序提供了一个替换兼容的客户端库。如果
mysql-community-libs-compat
系统上有旧版本,它也会被替换。
如果您为 MySQL 安装了不是来自您的 Linux 发行版的本地软件存储库的第三方包(例如,直接从 Oracle 以外的供应商下载的包),您应该在安装新的、直接下载的包之前卸载所有这些包来自甲骨文。这是因为这些供应商的 RPM 包和 Oracle 之间可能会发生冲突:例如,供应商关于哪些文件属于服务器以及哪些文件属于客户端库的约定可能与用于 Oracle 包的约定不同。尝试安装 Oracle RPM 可能会导致消息指出要安装的 RPM 中的文件与已安装包中的文件冲突。
从多个 MySQL 版本安装客户端库。
可以安装多个客户端库版本,例如您希望保持与链接到以前库的旧应用程序的兼容性的情况。要安装较旧的客户端库,请使用--oldpackage
带有rpm的选项。例如,要
mysql-community-libs-5.5
在具有libmysqlclient.20
MySQL 5.7 的 EL6 系统上安装,请使用如下命令:
$> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
调试包。 使用调试包
编译的 MySQL 服务器的特殊变体
已包含在服务器 RPM 包中。它执行调试和内存分配检查,并在服务器运行时生成跟踪文件。要使用该调试版本,请使用 启动 MySQL
/usr/sbin/mysqld-debug
,而不是将其作为服务启动或使用/usr/sbin/mysqld
. 有关您可以使用的调试选项
,请参见第 5.8.3 节 “DBUG 包” 。
在 5.7.21 中
,调试构建的默认插件目录从 更改为
/usr/lib64/mysql/plugin
。
/usr/lib64/mysql/plugin/debug
以前,必须更改
plugin_dir
为以
/usr/lib64/mysql/plugin/debug
进行调试构建。
从源 SRPM 重建 RPM。 MySQL 的源代码 SRPM 包可供下载。它们可以按原样使用,通过标准的rpmbuild工具链重建 MySQL RPM。
root
预 GA 版本的密码。
对于 MySQL 5.7.4 和 5.7.5,初始随机
root
密码被写入
环境变量.mysql_secret
命名的目录中的文件中。HOME
尝试访问该文件时,请记住,根据操作系统的不同,使用sudo等命令可能会导致 的值HOME
引用root
系统用户的主目录。.mysql_secret
以模式 600 创建,仅供创建它的系统用户访问。在 MySQL 5.7.4 之前,帐户(包括
root
) 在 MySQL 授权表中为 RPM 安装创建的最初没有密码;启动服务器后,您应该使用第 2.10 节“安装后设置和测试”中的说明为它们分配密码。”