MySQL8在RHEL(红帽操作系统)6.5上的安装(三)
作者:谎言诞行    发布时间:2023年12月25日

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

image.png


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

image.png

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

# 在 /home/mysql 下,创建一个文件夹 mysql8

mkdir mysql8

# 将所有 rpm 包移动到 /home/mysql/mysql8 文件夹下

mv mysql-community-* mysql8/

image.png


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

image.png



5、设置环境变量mysqluser 账户(用户)操作

关于账户(用户)的环境变量设置,其实不是必须的。配置环境变量,只是为了不在调用可执行文件时,书写文件路径。Linux 系统中,用户的环境变量一般在隐藏文件中配置。

首先,我们输入 cd 命令回到 mysqluser账户(用户)的主目录。回到目录后,可以输入 pwd 命令查看路径是否正确。

然后我们输入 ls -la 命令,查看配置文件是否存在。

# 先回到主目录
cd 

# 检查目录是否正确
pwd

# 查看主目录的文件
ls -la

image.png

最后,我们用 vim .bashrc 命令,增加一行关于MySQL可执行文件的路径配置信息

# 编辑 .bashrc 文件
vim .bashrc

# 在文件里面添加 path 路径 如下:
export PATH=$PATH:/home/mysql/mysql8/usr/bin/:/home/mysql/mysql8/usr/sbin/

image.png

需要注意的是,在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

image.png

留意下 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

参考如下图:

image.png


9、MySQL 用户登录测试mysqluser 账户(用户)操作

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

测试效果,如下图:

image.png

至此,数据库命令执行有返回结果,数据库安装完毕。


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 这行必须加上

image.png

文件创建后,默认是没有可执行权限的。需要手工授权文件,使其可执行

# 授权 mysql8_start.sh 文件可执行权限

chmod +x /home/mysql/mysql8/mysql8_start.sh

# 查看授权是否成功,如果文件是绿色,即可。(如果终端不能显示颜色,则查看权限信息是否有 x )

ls -l

image.png


10.2、添加调用语句(root 账户(用户)操作

# 找到系统中的本地启动文件,命令如下:

ls -la /etc/rc.d/rc.local

image.png

然后,添加一行调用mysql8_start.sh的命令进入文件,并保存。

# 用 root 用户,编辑 rc.local 文件

vim /etc/rc.d/rc.local

# 添加一行记录(系统启动时,会执行该脚本)

su -l mysqluser -c "/home/mysql/mysql8/mysql8_start.sh"

截图如下:

image.png

说明如下:

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

截图如下:

image.png


至此,结束。

填写一种颜色的字符(不区分大小写),1分钟有效,点击图片刷新