您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

Centos7 Mysql5.7.28升级到5.7.31过程

时间:2020-09-25 11:40:43  来源:  作者:

前言

在操作系统为centos的生产环境服务器需要进行等保2.0评测,使用绿盟科技的扫描软件扫描后检测出一大批漏洞,因此需要进行漏洞修复虽然报告中有一大堆的漏洞,但是细分下来分为MySQL数据库方面

Mysql的漏洞可直接通过升级Mysql最新版本解决,以下通过模拟Mysql低版本5.7.28 到高版本 5.7.31 的升级做演示

 

安装Mysql 5.7.28 版本

1. 官网获取Mysql-5.7.28 的包.

Mysql5.7.28-Centos7 rpm 包下载地址: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

2. 上传到Centos7中的/opt 路径

3. 编写一键安装脚本

vim mysql5.7.28_install.sh
#!/bin/bash#RPM包位置https://dev.mysql.com/downloads/mysql/#选择【Looking for the latest GA version?】#操作系统选择Red Hat Enterprise linux /Oracle Linux#选择第一个500多MB的tar包echo "================================"
echo "正在卸载Mysql"
echo "======================================"
rpm -e $(rpm -qa|grep -i mysql) --nodepsrpm -e $(rpm -qa|grep -i maria) --nodepsrpm -e $(rpm -qa|grep -i postfix) --nodepsecho "================================"
echo "正在安装Mysql"
echo "======================================"
mkdir mysql5.7.28tar -xvf  mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C mysql5.7.28 && cd mysql5.7.28rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm​echo "=========Mysql安装成功============================="
systemctl start mysqld && systemctl enable mysqldnetstat -anp|grep 3306cat /var/log/mysqld.log   | grep 'temporary password'​echo "第一次登陆修改root密码的语句是:"
echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1qe3!QE#';"
echo "创建远程用户的语句是:"
echo "grant all privileges on *.* to 'root'@"%" identified by '1qe3!QE#' with grant option;"
#grant all privileges on *.* to 'sdata1'@"%" identified by '1qe3!QE#' with grant option;
echo "创建新用户"

4. 执行脚本

sh mysql5.7.28_install.sh

 

5. 登陆数据库并修改账号密码

mysql -uroot -p
#输入临时密码然后回车ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1qe3!QE#';      #修改本地管理员密码
grant all privileges on *.* to 'root'@'%' identified by '1qe3!QE#' with grant option;   #创建远程管理员,带grant权限

6. 迁移Mysql存储目录

systemctl stop mysqld
mkdir /data_lvmmv /var/lib/mysql/ /data/lvm/

迁移Mysql存储目录后可以删除/var/lib/mysql 但由于配置没有改socket的位置,因此如果删除了/var/lib/mysql目录导致mysqld无法启动

方法一:需要执行

mkdir /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

方法二:修改socket默认路径

[mysqld]

socket=/data_lvm/mysql/mysql.sock

[mysql]

socket=/data_lvm/mysql/mysql.sock #不加的话使用本地的mysql命令登陆会报错

7. 修改数据库配置,与生产环境一致

datadir=/data_lvm/mysql
socket=/var/lib/mysql/mysql.sock
​# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
​log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# szyd need to setsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONcharacter-set-server=utf8mb4
collation-server=utf8mb4_general_cilower_case_table_names=1
#sql_policeplugin-load=validate_password.sovalidate_password_policy=2
validate_password_length=8
validate_password_mixed_case_count=1
validate_password_number_count=2
validate_password_special_char_count=1
validate-password=FORCE_PLUS_PERMANENT#WO-19 ser max_connection
max_connections=1000
#WO20 set wait-timeout
wait_timeout=28800
# start bin-loginit-connect=insert into accesslog.accesslog(id,time,localname,matchname) values (connection_id(),now(),user(),current_user())log_bin=/data_lvm/mysqllog/mysql_binbinlog-format=Rowserver-id=1
log-bin-trust-function-creators=1
#set connection-control
plugin-load-add=connection_control.soconnection-control=FORCEconnection-control-failed-login-attempts=FORCEconnection_control_min_connection_delay=1000
connection_control_max_connection_delay=86400
connection_control_failed_connections_threshold=3
#set  slow
slow_query_log=onslow_query_log_file=/var/lib/mysql/mysql-slow.log
#log_query_time=1
​[mysql]#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

8. 同步数据

备份Mysql

备份的目的是避免数据丢失,一定要备份好才接下来操作。

  • 备份配置
  • 逻辑备份
  • 物理备份(数据卷,日志)

 

查看/etc/my.cnf,然后进行备份/etc/my.cnf 和Mysql存储目录(生产环境任何操作一定要先备份,在操作)

1. 备份配置文件

cp /etc/my.cnf   /home/cgt/mysqlbak/my.cnf

2. 备份逻辑文件

mysqldump -uroot -p --all-databases > all.sql   #全库备份
mysqldump -uroot -p --databases XXX > XXX.sql   #业务库备份

3. 停机后备份完整的数据文件

systemctl stop msyqld      #暂停Mysql                
tar -zcvf mysqlbak.tar.gz   /var/lib/mysql   # 数据卷归档

升级Mysql到5.7.31

1. 获取最新版本

上mysql官网,下载最新版的rpm包。登陆 https://dev.mysql.com/downloads/mysql/ 网站默认是Mysql 8最新版本的 如果是用Mysql5.7的,点击下图红色框框,

Centos7 Mysql5.7.28升级到5.7.31过程

 

根据自己的操作系统和位数进行选择,这里是Centos7 64位。

Centos7 Mysql5.7.28升级到5.7.31过程

 

截至 2020/09/21,官网上 Mysql5.7 系列最新的版本为 5.7.31

下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

2. 上传tar包到centos7的/opt 目录

3. 编写Mysql一键升级脚本

vim mysql5.7.31_upgrade.sh

这里我们使用先卸载的方法,RPM包虽然可以直接 rpm -Uvh 升级,但mysql中有6个rpm包,相互依赖,升级会报依赖的问题。

#!/bin/bash
#rpm包安装的服务使用rpm -Uvh 升级
mkdir mysql5.7.31
tar xvf  mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar -C mysql5.7.31 && cd mysql5.7.31
rpm -Uvh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -Uvh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -Uvh mysql-community-devel-5.7.29-1.el7.x86_64.rpm
rpm -Uvh mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
rpm -Uvh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -Uvh mysql-community-server-5.7.29-1.el7.x86_64.rpm
#还原本来的my.cnf
mv /etc/my.cnf  /etc/my.cnf.bak  &&  mv /etc/my.cnf.rpmsave  /etc/my.cnf
#重新启动Mysql并查询进程
systemctl restart mysqld
netstat -anp|grep 3306

4. 执行脚本,一键更新

sh mysql5.7.31_upgrade.sh
Centos7 Mysql5.7.28升级到5.7.31过程

 

5. 升级Mysql系统表

mysql_upgrade  -uroot -p     #密码和本来的一样
#-s 参数是仅升级系统表的意思,避免数据库升级后无法打开一些系统表
Centos7 Mysql5.7.28升级到5.7.31过程

 

6. 登陆数据库验证

mysql -uroot -p
Centos7 Mysql5.7.28升级到5.7.31过程

 

这个时候,完成Mysql的版本更新,漏洞也随之消失了。



Tags:Mysql5.7.28升级   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言在操作系统为centos的生产环境服务器需要进行等保2.0评测,使用绿盟科技的扫描软件扫描后检测出一大批漏洞,因此需要进行漏洞修复虽然报告中有一大堆的漏洞,但是细分下来分...【详细内容】
2020-09-25  Tags: Mysql5.7.28升级  点击:(265)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(6)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(17)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(16)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(19)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(27)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条