1、前言
在前面的文章中,我们已经准备好服务器环境,下载好服务端安装包(比如:mysql-8.0.21-1.el6.x86_64.rpm-bundle.tar),安装包已经上传到服务器上面了。接下来,我们将开始自定义安装的操作。
操作步骤大概描述如下:
rpm包冲突处理
程序包解压及相关处理
程序安装
设置环境变量
my.cnf 文件配置
MySQL 数据库初始化
MySQL 数据库启动
MySQL 用户登录测试
MySQL 服务自启动配置
本文主要面向于计算机技术爱好者。(由于文章较长,所以分开几个部分。这里主要讲述服务端的安装工作)
注意:在软件安装过程中,可能会提示缺少某些环境软件,比如:gcc 编译环境。大家可以 直接用 命令 yum 安装即可。如果需要设置 yum 软件源,可以参考文章《RHEL(红帽操作系统)6.5的安装》。
2、rpm包冲突处理
由于RHEL(红帽操作系统)6.5中,可能在安装时自带一些软件,比如python,java,mysql,php。在安装MySQL 8.x时,需要卸载自带的MySQL 5.x 软件包。
Ø 首先,检查是否有MySQL 5.x版本的rpm安装包(如果命令执行没有结果,就忽略 第2章节)
rpm -qa | grep mysql
Ø 然后,卸载旧版本rpm包。(--nodeps 参数是用于卸载rpm包时,不卸载关联软件)
#xxxxxx 代表 上一个查询语句输出的 结果。如果有多行就一个个卸载即可 rpm -e --nodeps xxxxxxx

3、程序包解压及相关处理,mysqluser 账户(用户)操作
前面的文章《MySQL8在RHEL(红帽操作系统)6.5上的安装(二)》中,我们已经把软件包(mysql-8.0.21-1.el6.x86_64.rpm-bundle.tar)上传到 mysqluser 用户的主目录(/home/mysql)中了。软件包是 tar 格式的文件,直接解压即可。命令参考如下:
# 文件比较大,可能需要等待一会 tar -xf mysql-8.0.21-1.el6.x86_64.rpm-bundle.tar
截图参考如下:(截图是刚截的,所以文件名不一定一致),解压后,会得到多个 rpm 包。

最后,为了方便书写配置信息以及软件安装,我们可以先创建一个名为 mysql8 的文件夹,再移动所有rpm包到文件夹内。命令如下:
# 在 /home/mysql 下,创建一个文件夹 mysql8 mkdir mysql8 # 将所有 rpm 包移动到 /home/mysql/mysql8 文件夹下 mv mysql-community-* mysql8/

4、程序安装(mysqluser 账户(用户)操作)
rpm包说明,解压出来的rpm包有多个,分别是:
mysql-community-client-8.0.21-1.el6.x86_64.rpm (连接工具包)
mysql-community-common-8.0.21-1.el6.x86_64.rpm(公共程序包)
mysql-community-devel-8.0.21-1.el6.x86_64.rpm (二次开发包)
mysql-community-libs-8.0.21-1.el6.x86_64.rpm (库文件包)
mysql-community-libs-compat-8.0.21-1.el6.x86_64.rpm (库文件兼容包)
mysql-community-server-8.0.21-1.el6.x86_64.rpm (服务程序包)
mysql-community-test-8.0.21-1.el6.x86_64.rpm (测试包)
注意:新版本的 mysql8 安装包会多几个rpm包,但是我们不需要理会,一般用不到。
接下来,我们按顺序解压安装
由于 rpm 安装包直接安装会把软件安装到 root下,所以我们这里使用解压安装的方式,把 MySQL 安装到 mysqluser 账户(用户)下。其实,解压安装的方式对于安装包执行顺序没有太大要求(一般不需要安装devel包和test包)依次执行命令如下:
# 先进入 mysql8 文件夹 cd mysql8 # 然后创建 rpm_packages 文件夹,用于等下转移 rpm 包。 mkdir rpm_packages # 开始解压 rpm 包,然后得到几个目录。执行完,再将 rpm 包转移到 rpm_packages 里面,方便管理 rpm2cpio mysql-community-client-8.0.21-1.el6.x86_64.rpm | cpio -idvm rpm2cpio mysql-community-common-8.0.21-1.el6.x86_64.rpm | cpio -idvm rpm2cpio mysql-community-libs-8.0.21-1.el6.x86_64.rpm | cpio -idvm rpm2cpio mysql-community-libs-compat-8.0.21-1.el6.x86_64.rpm | cpio -idvm rpm2cpio mysql-community-server-8.0.21-1.el6.x86_64.rpm | cpio -idvm # 转移 rpm 包 mv mysql-community-* rpm_packages/
解压完毕,我们会看到在mysql8文件夹下,多了几个文件夹(etc、usr、var)。

5、设置环境变量(mysqluser 账户(用户)操作)
关于账户(用户)的环境变量设置,其实不是必须的。配置环境变量,只是为了不在调用可执行文件时,书写文件路径。Linux 系统中,用户的环境变量一般在隐藏文件中配置。
首先,我们输入 cd 命令回到 mysqluser账户(用户)的主目录。回到目录后,可以输入 pwd 命令查看路径是否正确。
然后我们输入 ls -la 命令,查看配置文件是否存在。
# 先回到主目录 cd # 检查目录是否正确 pwd # 查看主目录的文件 ls -la

最后,我们用 vim .bashrc 命令,增加一行关于MySQL可执行文件的路径配置信息
# 编辑 .bashrc 文件 vim .bashrc # 在文件里面添加 path 路径 如下: export PATH=$PATH:/home/mysql/mysql8/usr/bin/:/home/mysql/mysql8/usr/sbin/

需要注意的是,在linux系统中,配置路径分隔符不是分号(;),而是冒号(:)
其实,.bashrc 和 .bash_profile 文件可以选择其中一个添加。两个文件只是加载先后顺序不同。
注意:要使配置生效,可以使用命令 source .bashrc (添加到哪个文件,就写哪个文件)。但是由于在脚本中,使用了export命令扩展PATH变量,如果执行多次source命令,会出现PATH叠加的问题。建议,使用 exit 命令注销后重新登陆即可。
注销后重新登陆,系统会重新加载该账户下所有配置文件,这样就不会有叠加问题。
6、my.cnf 文件配置(mysqluser 账户(用户)操作)
这里需要注意下,由于我们是要把软件在 mysqluser 这个账户(用户)下运行起来,所以解压出来的文件夹(etc、usr、var),需要和根目录下(/etc、/usr、/var)这几个文件夹,区分开来。
首先,输入cd 命令回到 mysqluser 主目录 /home/mysql 下。
# 回到 mysqluesr 主目录 cd # 编辑 mysql8 目录下的 etc 文件夹 下的 my.cnf 文件。后面将以这个文件为默认配置 vim mysql8/etc/my.cnf
然后,输入vim mysql8/etc/my.cnf 命令,编辑mysql数据库的配置文件(my.cnf)。配置文件有很多信息需要配置。但是,我们要先保证数据库能运行起来。所以,只配置些关键参数。
注意:路径中的文件夹都需要存在。没有的就创建下。
# my.cnf 文件参考内容 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html [mysqld] #service running port port=52013 mysqlx_port=52014 #others datadir=/home/mysql/mysql8/var/lib/mysql socket=/var/lib/mysql/mysql.sock mysqlx_socket=/home/mysql/mysql8/var/run/mysqld/mysqlx.sock secure-file-priv=/home/mysql/mysql8/var/lib/mysql-files log-error=/home/mysql/mysql8/var/log/mysqld.log pid-file=/home/mysql/mysql8/var/run/mysqld/mysqld.pid

留意下 log 文件的路径,后面章节我们需要用到。因为 MySQL 数据库初始化后,会生成一个MySQL数据库用户root的随机密码。要这个密码才能进去MySQL数据库控制台。而密码就写在log文件里面。
7、MySQL 数据库初始化(mysqluser 账户(用户)操作)
# 首先,输入cd命令,回到mysqluser主目录。 cd # 然后,输入命令进行数据库初始化 mysqld --defaults-file=/home/mysql/mysql8/etc/my.cnf --initialize --user=mysqluser # --defaults-file 参数指定了MySQL数据库的配置文件路径。 # 如果不指定,会默认跑去找根目录root账户(用户)下的/etc/my.cnf # --initialize 参数指示可执行程序,进行数据库初始化工作 # --user 指定启动的Linux账户(用户)
8、MySQL 数据库启动(mysqluser 账户(用户)操作)
# 首先,输入cd命令,回到mysqluser主目录。 cd # 然后,输入命令启动数据库服务 mysqld --defaults-file=/home/mysql/mysql8/etc/my.cnf --user=mysqluser &
命令最后的 & 符号记得加上,用于程序后台运行
最后,验证数据库是否启动成功。验证方式有两个:
8.1、验证MySQL数据库主进程是否运行。通过命令查找,刚才启动数据库的进程是否存在。命令如下:
ps -ef | grep mysql
8.2、 验证MySQL数据库默认监听端口3306是否有程序监听。命令如下:
netstat -nl | grep 3306
参考如下图:

9、MySQL 用户登录测试(mysqluser 账户(用户)操作)
安装完数据库后,我们需要先在服务器上,用 MySQL 数据库中的 root 用户来检验数据库配置以及安装是否完整。测试时,只需要执行 show databases; 命令。如果有返回结果,即可。(这里需要密码才能登陆,密码在 log 的文件中,参考 6、my.cnf 文件配置 中的描述。如果找不到,可以再次 初始化操作)
测试效果,如下图:

至此,数据库命令执行有返回结果,数据库安装完毕。
10、MySQL 服务自启动配置
关于软件自启动配置,主要有3点:创建启动脚本,添加调用语句,重启服务器测试。接下来将详细说明:
10.1、创建启动脚本(mysqluser 账户(用户)操作)
# 在 mysqluser 用户的主目录,创建一个启动脚本文件 mysql8_start.sh vim /home/mysql/mysql8/mysql8_start.sh
文件内容如下:
#!/bin/bash mysqld --defaults-file=/home/mysql/mysql8/etc/my.cnf --user=mysqluser &
截图如下:(文件中 #!/bin/bash 这行必须加上)

文件创建后,默认是没有可执行权限的。需要手工授权文件,使其可执行
# 授权 mysql8_start.sh 文件可执行权限 chmod +x /home/mysql/mysql8/mysql8_start.sh # 查看授权是否成功,如果文件是绿色,即可。(如果终端不能显示颜色,则查看权限信息是否有 x ) ls -l

10.2、添加调用语句(root 账户(用户)操作)
# 找到系统中的本地启动文件,命令如下: ls -la /etc/rc.d/rc.local

然后,添加一行调用mysql8_start.sh的命令进入文件,并保存。
# 用 root 用户,编辑 rc.local 文件 vim /etc/rc.d/rc.local # 添加一行记录(系统启动时,会执行该脚本) su -l mysqluser -c "/home/mysql/mysql8/mysql8_start.sh"
截图如下:

说明如下:
su 命令记得加上 -l mysqluser 这参数。
因为系统启动时,执行 rc.local 这脚本文件的是 root账户(用户)。
而 MySQL 8 我们 安装在 mysqluser 账户(用户)上,所以是启动不了的。
"-l mysqluser" 这参数可以让root账户(用户)在执行命令时,切换到mysqluser这个账户(用户)去处理,并加载其命令环境。
10.3、重启服务器测试(root 账户(用户)操作)
# 重启操作系统 reboot # 系统启动后,查看进程信息 ps -ef | grep mysql # 查看端口监听信息 netstat -nl | grep 3306
截图如下:

至此,结束。