环境:
CentOS release 6.5
mysql-5.7.27
背景:
客户某次服务器环境安全扫描后,发现Oracle MySQL Server安全漏洞CVE-2019-5443和Oracle MySQL Server组件安全漏洞CVE-2019-5482。安检公司给出的建议是打补丁,但为防止后续仍然有其他漏洞出现决定直接把原MySQL进行升级。
目的:
通过将MySQL升级到8.0.22来解决上述漏洞。
操作:
一、卸载原数据库
查看原库版本:(安装完成后才整理的文档,忘记截图了,所以这里看到的都是最终的版本信息)
[root@localhost ~]# mysql -V
mysql Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL)
或
[root@localhost ~]# mysql -uroot -p
Enter password:
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.22 |
+-----------+
1 row in set (0.00 sec)
备份数据:先查出自己的库,再进行备份操作(zhaosheng库)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| zhaosheng |
+--------------------+
5 rows in set (0.00 sec)
[root@localhost bin]# mysqldump -h 127.0.0.1 -u root -B -p zhaosheng > /opt/zhaosheng.bak #将招生库的数据备份成/opt目录下的zhaosheng.bak文件
卸载旧版库:
//rpm包安装方式卸载
查包名:rpm -qa|grep -i mysql
删除命令:rpm -e --nodeps 包名
//yum安装方式下载
1.查看已安装的mysql
命令:rpm -qa | grep -i mysql
2.卸载mysql
命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64
查看mysql的其它依赖:rpm -qa | grep -i mysql
//卸载依赖
yum remove mysql-libs
yum remove mysql-server
yum remove perl-DBD-MySQL
yum remove mysql
二、安装新版数据库
官网下载安装包
官网下载链接:https://dev.mysql.com/downloads/mysql/
复制download按钮的链接地址,用wget进行下载:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
移动文件到/usr/local/mysql下解压(原文件夹内文件都可以删除)
安装
# cd /usr/local/mysql
# tar -xvJf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
# mv mysql-8.0.22-linux-glibc2.12-x86_64 mysql8.0 #重命名
# cd mysql8.0
# mkdir data #创建文件存储目录
# groupadd mysql #创建用户组
# useradd -g mysql mysql #创建用户(用户和密码)
# chown -R mysql.mysql /usr/local/mysql8.0/ #授权
# ./bin/mysqld --user=mysql --basedir=/usr/local/mysql/mysql8.0/ --datadir=/usr/local/mysql/mysql8.0/data/ --initialize #初始化数据库记得存储好临时密码
# vi /etc/my.cnf #修改配置信息(mysql-safe可先行注释)
[mysqld]
basedir=/usr/local/mysql8.0
datadir=/usr/local/mysql8.0/data
socket=/tmp/mysql.sock
character-set-server=utf8
# cp -a ./support-files/mysql.server /etc/init.d/mysql #监理MySQL服务
# chmod +x /etc/init.d/mysql
# chkconfig --add mysql
# chkconfig --list mysql #检查服务是否生效
# ln -s /usr/local/mysql/mysql8.0/bin/mysql /usr/bin #建立启动软链接
# service mysql start #启动数据库
# mysql -uroot -p #登录MySQL,输入上面记住的临时密码
# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; #修改root密码
# create schema [数据库名称] default character set utf8 collate utf8_general_ci; #创建库
# create user '[用户名称]'@'%' identified by '[用户密码]'; #创建用户并允许远程访问
# GRANT ALL PRIVILEGES on [数据库名称].* to [用户名称];
# ALTER USER '[用户名称]'@'%' IDENTIFIED BY '[用户密码]' PASSWORD EXPIRE NEVER; #修改加密规则
# ALTER USER '[用户名称]'@'%' IDENTIFIED WITH mysql_native_password BY '[用户密码]'; #更新一下用户的密码,不做这步可能现有的比如navicat会连接报错(1251- Client does not support authentication protocol)
# FLUSH PRIVILEGES; #刷新权限,立即生效
三、恢复备份
# mysql -uroot -p
mysql > source /opt/zhaosheng.bak
注意:升级后项目配置连接文件和驱动程序可能需要对应修改,如:pom.xml中修改mysql版本,yml文件中的DataSource属性的修改。
最后,连接数据库,瞅瞅数据没问题,收工!