mysql数据库漏洞修复方案之数据库版本升级

Centos7 二进制方式安装的mysql5.7.30升级为5.7.38 解决CVE-2021-22946漏洞

 

一、背景
由于进行安全扫描,发现mysql存在漏洞,高危漏洞编号为(CVE-2021-22946),此外还有多个中危,低危漏洞,目前mysql版本为5.7.30。

二、升级前须知
1.linux服务器中的mysql均为解压版,而非rpm安装包版。

2.官方支持的升级路径

同一个大版本中的小版本升级,比如5.7.30到5.7.38。
跨版本升级,但只支持跨一个版本升级,比如5.5到5.6,5.6到5.7。
不支持跨版本的直接升级,比如直接从5.5到5.7,可以先从5.5升级到5.6,再从5.6升级到5.7。
3.解压版的mysql升级,千万切记不要执行安装操作,这样会导致数据库文件全部丢失。

三、mysql下载
mysql官网下载

MySQL :: Download MySQL Community Server (Archived Versions)

 

 

 

四、具体步骤
4.1备份
查看目前版本:mysql -V

 

 

4.1.1备份数据文件和配置文件(可以不备份,此处以防万一)
查看数据目录:

cat /etc/my.cnf | grep datadir
备份:

tar -zcvf mysql.bak.tar.gz /usr/local/mysql/data

cp /etc/my.cnf /etc/my.cnf.bak


4.2升级

4.2.1关闭当前mysql服务

service mysql stop

 

 


直到下面这行命令没有返回数据,开始升级数据库

ps -ef |grep mysql | grep -v color


4.2.2删除安装位置的mysql
找到对应的安装目录(basedir)并删除:

rm -rf /usr/local/mysql

 

 


注:如果数据文件夹/日志等和basedir在同一目录下则数据文件夹,日志文件夹等非官方解压文件不删除!不要执行上面命令,需要自己到basedir里单个删除需要替换的文件夹!!

 

 

 

4.2.3解压并移动覆盖老版本文件,并重新授权
tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz

 

 



mv mysql-5.7.38-linux-glibc2.12-x86_64/** /usr/local/mysql

 

 



chown -R mysql.mysql /usr/local/mysql/

 

 

 


4.3启动

4.3.1 添加开机启动mysql服务并启动mysql(开机自启这个步骤可以跳过,防止启动脚本不一样)
重新添加开机启动(可以跳过,此处防止2个版本启动脚本不一致):

rm -rf /etc/init.d/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
4.3.2 启动

service mysql start

 

 

 

 

 ####################################################################

#######################################################################

mkdir mysql-backup
cd mysql-backup
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p

备份MySQL设置

1
2
 
cd mysql-backup
sudo tar zcvf mysql_config.tar.gz /etc/mysql/

3 添加MySQL APT

下载mysql-apt-config_0.8.13-1_all.deb:https://dev.mysql.com/downloads/repo/apt/

安装:

1
2
3
4
 

sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb

sudo apt-get update

4 安装新版的MySQL

1
2
3
4
5
 
service mysql stop  # 先停了MySQL service

sudo apt-get install mysql-server

sudo service mysql start # 开启MySQL service

最后检查下升级后的版本:

 
mysql -V

显示:

 
mysql  Ver 8.0.17 for Linux on x86_64 (MySQL Community Server - GPL)

已经升级成功。

 
posted @ 2022-09-24 15:53  往事已成昨天  阅读(3055)  评论(0编辑  收藏  举报