MySQL从5.7-8.0离线升级教程很少,5.7-8.0的安全方面有很大的改变,升级遇到了很多坑,加上我是个菜鸟,最后只好卸载5.7,安装8.0的方式进行离线升级。

1、备份5.6数据库

2、卸载数据库

//查询数据库安装
rpm -qa | grep mysql

//普通删除模式
rpm -e mysql

//强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
rpm -e --nodeps mysql-XXXX

//查询数据库安装找不到就用大写试试
rpm -qa | grep MySQL

//查询数据库安装
rpm -qa | grep mariadb

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

centos7 离线 补丁 centos离线升级_服务器

centos7 离线 补丁 centos离线升级_服务器_02

3、导入下载好的数据库文件

  下载地址:MySQL :: Download MySQL Community Server

centos7 离线 补丁 centos离线升级_数据库架构_03

//新建文件夹
mkdir mysql

cd mysql/

//解压
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar

centos7 离线 补丁 centos离线升级_服务器_04

 4、开始安装

        因为离线安装有缺依赖的问题,所以安装顺序很重要,大家根据系统安装的程序不同,下载提示需要的依赖即可。

CentOS安装数据库依赖下载地址:CentOS Mirror

centos7 离线 补丁 centos离线升级_数据库架构_05

//这是个例子,安装server时会提示,依赖安装缺什么安什么
rpm -ivh perl-5.16.3-297.el7.x86_64.rpm perl-libs-5.16.3-297.el7.x86_64.rpm perl-macros-5.16.3-297.el7.x86_64.rpm perl-threads-shared-1.43-6.el7.x86_64.rpm perl-threads-1.87-4.el7.x86_64.rpm perl-constant-1.27-2.el7.noarch.rpm perl-Carp-1.26-244.el7.noarch.rpm perl-File-Temp-0.23.01-3.el7.noarch.rpm perl-File-Path-2.09-2.el7.noarch.rpm perl-PathTools-3.40-5.el7.x86_64.rpm perl-Exporter-5.68-3.el7.noarch.rpm perl-Socket-2.010-5.el7.x86_64.rpm perl-Storable-2.45-3.el7.x86_64.rpm perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm perl-Filter-1.49-3.el7.x86_64.rpm perl-Getopt-Long-2.40-3.el7.noarch.rpm perl-Pod-Simple-3.28-4.el7.noarch.rpm perl-Text-ParseWords-3.29-4.el7.noarch.rpm perl-Time-HiRes-1.9725-3.el7.x86_64.rpm perl-Time-Local-1.2300-2.el7.noarch.rpm perl-Pod-Escapes-1.04-297.el7.noarch.rpm perl-Pod-Usage-1.63-3.el7.noarch.rpm perl-Encode-2.51-7.el7.x86_64.rpm perl-Pod-Perldoc-3.20-4.el7.noarch.rpm perl-podlators-2.5.1-3.el7.noarch.rpm perl-HTTP-Tiny-0.033-3.el7.noarch.rpm perl-parent-0.225-244.el7.noarch.rpm

//数据库程序安装
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm

rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm

//主程序
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm

rpm -ivh mysql-community-devel-8.0.28-1.el7.x86_64.rpm

//如果提示缺依赖暂时无法安装依赖时用这个命令跳过依赖检测【--force --nodeps】
rpm -ivh mysql-community-devel-8.0.28-1.el7.x86_64.rpm --force --nodeps

centos7 离线 补丁 centos离线升级_服务器_06

centos7 离线 补丁 centos离线升级_centos7 离线 补丁_07

5、启动数据库

//启动
systemctl start mysqld

//查询启动
systemctl status mysqld

//重启
systemctl restart mysqld
//service restart mysqld

//停止
systemctl stop mysqld

//查看防火墙
systemctl status firewalld

//开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

//重新加载
firewall-cmd --reload

//查询是否开启
firewall-cmd --zone=public --query-port=3306/tcp

//查看数据库默认随机密码【密码应该是数据库升级前的密码,如果不对就用这个命令查看随机密码】
sudo grep 'temporary password' /var/log/mysqld.log

//进入数据库
mysql -u root -p mysql

centos7 离线 补丁 centos离线升级_服务器_08

centos7 离线 补丁 centos离线升级_数据库架构_09

6、进入数据库配置

//查看数据库
use mysql

//修改密码
set password for 用户名@localhost = password('新密码');

//查看权限
select  User,authentication_string,Host from user;

//开启远程权限
update user set host = '%' where user = 'root';

//更新表
flush privileges;

centos7 离线 补丁 centos离线升级_centos7 离线 补丁_10

        接下来就可以远程连接到数据库了(●'◡'●),升级前的数据都在,如果没有数据就执行第7步导入数据库备份的文件。

        如果远程客户端连接数据库报错不受支持等类似的问题,请升级远程客户端,新版数据库安全规则变了,老版本客户端不支持新的加密规则;当然你也可以修改数据库的加密规则,这里就不介绍了。

7、导入备份文件