阿里龙晰系统上将yum安装的myql_8.0.36升级到mysql_8.4.0的过程
阿里龙晰系统上将yum安装的myql_8.0.36升级到mysql_8.4.0的过程
本章内容介绍了在阿里龙晰系统上修复 Oracle MySQL 安全漏洞CVE-2024-21176、CVE-2024-21177、CVE-2024-21179的过程。
说明:
- Oracle MySQL 安全漏洞(CVE-2024-21176):oracle:mysql_server 8.0.36 <= 8.4.0,解决方案是将Mysql升级到 8.4.0。
- Oracle MySQL 安全漏洞(CVE-2024-21177):oracle:mysql_server 8.0.36 <= 8.0.37,解决方案是将Mysql升级到 8.0.37。
- Oracle MySQL 安全漏洞(CVE-2024-21179):oracle:mysql_server 8.0.36 <= 8.0.37,解决方案是将Mysql升级到 8.0.37。
目录
- 阿里龙晰系统上将yum安装的myql_8.0.36升级到mysql_8.4.0的过程
- 一、背景概述
- 二、环境信息
- 1、服务器信息
- 2、系统盘分区
- 三、升级mysql数据库
- 1、查看当前系统及mysql版本
- 2、将mysql数据库中的数据进行备份
- 3、停止mysql服务 并 卸载mysql
- 4、下载并安装新版mysql_v8.4.0
- 5、创建mysql所需要的目录文件
- 6、创建mysql的配置文件
- 7、配置systemctl 管理mysql 数据库服务
- 8、配置环境变量
- 9、初始化数据库
一、背景概述
在部署时采用yum install进行的安装,版本是8.0.36,部署完成后进行安全漏洞扫描时,发现了上面【说明:】部分罗列的漏洞,其过程存在很多波折,但是升级成功后进行复盘时,主要的问题是我自己在配置参数时没有配置对的问题,不存在系统级别的问题,所以将整个过程编写出来,为同样经历的同学提供此思路和帮助。
用yum安装8.0.36(存在漏洞的mysql版本)的命令
[root@mysqlserver ~]# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@mysqlserver ~]# yum install mysql-server
二、环境信息
1、服务器信息
主机名 | IP | 系统 | CPU | 内存 | 系统盘分配 | 挂载硬盘 | 功能 |
---|---|---|---|---|---|---|---|
mysqlserver | xxx.xxx.x.x | Anolis OS 8.9_x86-64bit | 8 | 16 | 128GB | 300G | 数据库服务 |
2、系统盘分区
主机名 | 系统盘 | /boot | SWAP | / | data盘 |
---|---|---|---|---|---|
mysqlserver | 256GB | 2GB | 16GB | 118GB | 300G |
三、升级mysql数据库
1、查看当前系统及mysql版本
[root@mysqlserver ~]# mysql -uroot -p
Enter password: Zwkj@820921
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.36 |
+-----------+
1 row in set (0.00 sec)
mysql> exit
注:根据glibc的版本下载MySql的版本
[root@mysqlserver ~]# ldd --version
ldd (GNU libc) 2.28
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
2、将mysql数据库中的数据进行备份
通过Navicat客户端,将Mysql数据库中的数据同步到本机数据库中
3、停止mysql服务 并 卸载mysql
[root@mysqlserver ~]# systemctl status mysqld
[root@mysqlserver ~]# systemctl stop mysqld
[root@mysqlserver ~]# systemctl status mysqld
[root@mysqlserver ~]# systemctl disable mysqld
[root@mysqlserver ~]# yum remove mysql mysql-server
[root@mysqlserver ~]# rm -rf /var/lib/mysql/
[root@mysqlserver ~]# rm -rf /etc/my.cnf.d
[root@mysqlserver ~]# mv /data/mysql /data/mysql_bak
4、下载并安装新版mysql_v8.4.0
[root@mysqlserver ~]# cd /data
[root@mysqlserver data]# mkdir mysql
[root@mysqlserver data]# cd mysql
[root@mysqlserver mysql]# mkdir data
[root@mysqlserver mysql]# mkdir log
[root@mysqlserver mysql]# cd ..
[root@mysqlserver data]# chown -R mysql.mysql ./mysql
[root@mysqlserver ~]# cd /opt
[root@mysqlserver opt]# wget https://cdn.mysql.com/archives/mysql-8.4/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz
[root@mysqlserver opt]# tar -xf mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz
[root@mysqlserver opt]# mv ./mysql-8.4.0-linux-glibc2.28-x86_64 ./mysql
[root@mysqlserver opt]# mv ./mysql /usr/local/mysql
5、创建mysql所需要的目录文件
[root@mysqlserver opt]# cd /usr/local/mysql
[root@mysqlserver mysql]# mkdir data
[root@mysqlserver mysql]# cd..
[root@mysqlserver local]# chown -R mysql.mysql ./mysql
[root@mysqlserver local]# touch /usr/local/mysql/log/error.log
6、创建mysql的配置文件
[root@mysqlserver local]# vim /etc/my.cnf
/etc/my.cnf配置文件
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
server_id=1
port=3306
socket=/tmp/mysql.sock
symbolic-links=0
# mysql8.4.0需要添加该参数
mysql-native-password=ON
lower_case_table_names=1
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/data/mysql/log/error.log
pid-file=/usr/local/mysql/mysql.pid
[client]
port=3306
socket=/tmp/mysql.sock
7、配置systemctl 管理mysql 数据库服务
vim /etc/systemd/system/mysqld.service
/etc/systemd/system/mysqld.service配置文件内容
[Unit]
Description=Mysql
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#PIDFile=/usr/local/mysql/mysql8420/data/localhost.localdomain.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start
#ExecReload=/bin/kill -s HUP $MAINPID
ExecReload=/usr/local/mysql/support-files/mysql.server restart
#ExecStop=/bin/kill -s QUIT $MAINPID
ExecStop=/usr/local/mysql/support-files/mysql.server stop
PrivateTmp=false
User=mysql
Group=mysql
[Install]
8、配置环境变量
[root@mysqlserver local]# vim /etc/profile
在/etc/profile配置文件末尾添加配置
export PATH=/usr/local/mysql/bin:$PATH
[root@mysqlserver local]# source /etc/profile
9、初始化数据库
[root@mysqlserver local]# cd /usr/local/mysql/bin
[root@mysqlserver bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
# 数据库初始化完成后日志中会输出,数据库生成的默认密码: root@localhost: 5rOjaUH?W49=
[root@mysqlserver bin]# systemctl start mysqld
[root@mysqlserver bin]# systemctl status mysqld
[root@mysqlserver bin]# mysql -uroot -p
# 输入数据库生成的默认密码:5rOjaUH?W49=
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket BY '123456';
mysql> use mysql;
mysql> update user set Host='%' where User='root';
mysql> flush privileges;
mysql> exit;
[root@mysqlserver bin]# systemctl stop mysqld
[root@mysqlserver bin]# systemctl start mysqld