Linux上使用RPM来进行5.7以上版本MySQL的安装

[作者的话:本文译自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服务器就不会重启。
在服务器初始化开始时,鉴于服务器的数据文件夹还是空的,可能是以下的情况:

  • 服务器已经初始化了
  • SSL证书和密钥文件已经在文件夹内了
  • validate_password 已经安装与激活
  • 超用户 ‘root’@‘localhost’ 已被创建,而这个超用户的密码已经设置和放在了错误日志文件中,想要获得他, 对于RHEL, Oracle Linux, CentOS, 和Fedora系统要用以下的命令:

shell> sudo grep ‘temporary password’ /var/log/mysqld.log

  • 对于SLES 系统用到以下命令:

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包。

展开阅读全文

没有更多推荐了,返回首页