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
3、导入下载好的数据库文件
下载地址:MySQL :: Download MySQL Community Server
//新建文件夹
mkdir mysql
cd mysql/
//解压
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
4、开始安装
因为离线安装有缺依赖的问题,所以安装顺序很重要,大家根据系统安装的程序不同,下载提示需要的依赖即可。
CentOS安装数据库依赖下载地址:CentOS Mirror
//这是个例子,安装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
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
6、进入数据库配置
//查看数据库
use mysql
//修改密码
set password for 用户名@localhost = password('新密码');
//查看权限
select User,authentication_string,Host from user;
//开启远程权限
update user set host = '%' where user = 'root';
//更新表
flush privileges;
接下来就可以远程连接到数据库了(●'◡'●),升级前的数据都在,如果没有数据就执行第7步导入数据库备份的文件。
如果远程客户端连接数据库报错不受支持等类似的问题,请升级远程客户端,新版数据库安全规则变了,老版本客户端不支持新的加密规则;当然你也可以修改数据库的加密规则,这里就不介绍了。