[作者的话:本文译自https://dev.mysql.com/doc/mysql-linuxunix-excerpt/8.0/en/linux-installation-rpm.html,由于自己安装新版本MySQL遇到太多坑,而官方文档帮助了自己很多于是做了翻译,希望能帮到大家]
最推荐通过RPM包安装发行版MySQL的方法就是使用Oracle提供的RPM包来安装。
你可以通过以下两个途径来下载RPM Bundle:
注意
也会有其他供应商会提供MySQL的RPM包。你一定需要了解清楚他们在特性、功能、协议上的区别(包括通信设置问题),而且因为我们的安装指南可能不会适用于他们,反而需要更好的研究他们的安装说明。
下面会列出不同MySQL版本的RPM包内容:
MySQL社区版的RPM包
包名 | 简要 |
---|---|
mysql-community-server | 数据库服务器与相应的工具 |
mysql-community-client | MySQL客户端应用与工具 |
mysql-community-common | 为服务器和客户端的库所用的公用库文件 |
mysql-community-server-minimal | 最小可用的数据库服务器与相应的工具 |
mysql-community-devel | 给MySQL客户端应用提供的开发用的头文件与库 |
mysql-community-libs | MySQL客户端的共享库 |
mysql-community-libs-compat | MySQL客户端的共享兼容库 |
mysql-community-test | 给MySQL服务器测试用的套件 |
MySQL专业版的RPM包
包名 | 简要 |
---|---|
mysql-community-server | 数据库服务器与相应的工具 |
mysql-community-client | MySQL客户端应用与工具 |
mysql-community-common | 为服务器和客户端的库所用的公用库文件 |
mysql-community-server-minimal | 最小可用的数据库服务器与相应的工具 |
mysql-community-devel | 给MySQL客户端应用提供的开发用的头文件与库 |
mysql-community-libs | MySQL客户端的共享库 |
mysql-community-libs-compat | MySQL客户端的共享兼容库 |
mysql-community-test | 给MySQL服务器测试用的套件 |
RPM包的全称会遵循以下格式:
包名-MySQL版本号-Linux版本号-处理器(x64还是x86).rpm
Linux不同版本的标记
标记 | 对应Linux版本 |
---|---|
el6, el7 | Red Hat Enterprise Linux/Oracle Linux/CentOS 6/7 |
fc26, fc27, fc28 | Fedora 26/27/28 |
sles12 | SUSE Linux Enterprise Server 12 |
你可以通过以下命令来查看RPM包里含有的所有文件:
shell> rpm -qpl 包名-MySQL版本号-Linux版本号-处理器(x64还是x86).rpm
从这开始以下的内容只适用于从Oracle下载的RPM包,而不适用于通过MySQL仓库安装:
RPM包之间存在着依赖关系,如果你打算安装大部分包的话,你应该选择安装整合Bundle,它里面包含了上面所陈列的所有RPM包,这样你就不需要一个个下载。
大多数情况下,你需要安装mysql-community-server, mysql-community-client, mysql-community-libs, mysql-community-common, 和mysql-community-libs-compat包来确保基本的功能,标准的MySQL安装。为了完成这一标准安装任务,你需要到那个包含那些文件(当然,最好没有同名的文件)的文件夹下,输入以下命令:
shell> sudo yum install mysql-community-{server,client,common,libs}-*
如果你是SLES Linux的话你要把yum换成zypper,是Fedora的话换成dnf。
虽说我们推荐用像yum这种高级管理包工具来进行安装,对于那些喜欢直接使用rpm命令的用户可以用rpm -Uvh来代替yum install命令。但是,用rpm -Uvh命令更容易导致安装失败,因为其中隐含的包依赖关系可能处理上会出问题。
如果你只需要安装客户端应用,那么可以不需要mysql-community-server,输入以下命令:
shell> sudo yum install mysql-community-{client,common,libs}-*
同样的如果你是SLES Linux的话你要把yum换成zypper,是Fedora的话换成dnf。
一个标准的MySQL安装应该会产生以下的文件:
从开发者社区下载的RPM包安装内容
文件 | 位置 |
---|---|
客户端应用与脚本 | /usr/bin |
mysqld服务器 | /usr/sbin |
配置文件 | /etc/my.cnf |
数据文件夹 | /var/lib/mysql |
错误日志文件 | 对于 RHEL, Oracle Linux, CentOS 或Fedora平台: /var/log/mysqld.log 对于SLES Linux: /var/log/mysql/mysqld.log |
secure_file_priv | /var/lib/mysql-files |
SysV的初始化脚本 | 对于 RHEL, Oracle Linux, CentOS 或Fedora平台: /etc/init.d/mysqld 对于SLES Linux: /etc/init.d/mysql |
systemd服务 | 对于 RHEL, Oracle Linux, CentOS 或Fedora平台: mysqld 对于SLES Linux: mysql |
进程号文件 | /var/run/mysql/mysqld.pid |
Socket | /var/lib/mysql/mysql.sock |
Linux密钥环文件夹 | /var/lib/mysql-keyring |
Unix指南页面 | /usr/share/man |
头文件 | /usr/include/mysql |
库 | /usr/lib/mysql |
Miscellaneous支持文件(例如错误信息、字符集文件) | /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服务:
shell> sudo service mysqld start
对于SLES Linux就是服务名称不太一样:
shell> sudo service mysql start
如果你的操作系统已激活了systemd脚本,你可以用一些标准服务命令诸如stop,start,status,restart来管理MySQL服务。mysqld服务是默认激活的,它在系统重启后也会启动。但要注意可能在不同systemd平台的区别: 例如,改变数据文件夹可能会引发问题。看这里来获取更多信息。
在用RPM包做升级安装时,如果MySQL服务器还在运行,升级时MySQL就会停止运行,在升级后MySQL服务器会重启。但如果版本也更换了(例如从设计版换成商业版,反之亦然),MySQL服务器就不会重启。
在服务器初始化开始时,鉴于服务器的数据文件夹还是空的,可能是以下的情况:
shell> sudo grep ‘temporary password’ /var/log/mysqld.log
shell> sudo grep ‘temporary password’ /var/log/mysql/mysqld.log
下一步就是登陆并初始化:
shell> mysql -uroot -p
并为你的超用户设置密码:
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘新密码’;
注意
validate_password是默认设置的,默认的密码政策要求密码包含至少一个大写字母,一个小写字母,一个数组和一个特殊字符,而且总长度不少于8个字符。
如果安装途中出现什么错误,你可以在错误日志文件/var/log/mysqld.log中寻找debug信息
对于某些Linux的版本,可能有必要去给文件描述数量增加限制。详情可见找不到文件与类似错误
从多个MySQL版本安装客户端库的话有可能安装多个版本的客户端库,对于你想保持兼容链接着先前库的旧应用的这种情况,为了安装旧的库,你在rpm的时候需要带 --oldpackage选项。例如你要安装一个mysql-community-libs-5.5在一个含有libmysqlclient.21 from MySQL 8.0的EL6系统,你就要用到这样的代码:
shell> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
关于Debug包 一个MySQL的特殊变体带有的Debug包会已经包含在服务器的RPM包中,他会进行debug和内存分配确认,并在服务器运行时创建trace文件。如果要用那debug文件,用/usr/sbin/mysqld-debug来开启MySQL而不是作为服务或者通过/usr/sbin/mysqld开启. 看[这里](https://dev.mysql.com/doc/refman/8.0/en/dbug-package.html)来查看你可以用到的Debug选项。
Note
默认的debug build配置文件夹在8.0.4版本已经从 /usr/lib64/mysql/plugin换到了/usr/lib64/mysql/plugin/debug in 8.0.4。8.0.4版本以前的话,还需要手动修改plugin_dir
通过SPRM源文件重建RPM文件 提供给MySQL的SPRM源代码开放下载,他们可以通过一系列的rpmbuild工具来重建MySQL RPM包。