【MySQL】mysql | MySQL5.7升级到MySQL8.0 | docker安装mysql8 | docker mysql8 连接失败问题 | docker mysql8 表名大小写不敏感问

一、说明

        1、安全扫描MySQL5.7安全漏掉较多,要求将数据库升级到指定的8.0版本

        2、MySQL已经存有大概6个库的正在跑业务

        3、时间要求紧迫,需要尽快处理

        4、5.7用的是物理机yum安装

二、解决方案

        1、8.0用docker安装

        2、停机5.7并备份,阻止增量

        3、启动8.0镜像,存储映射到物理机

        4、进入容器并导入SQL

三、具体步骤

1、停机5.7前,先进行数据备份

1)创建存储目录

mkdir /home/mysql8.0/mysql_data/sqlbak

2)导出全量数据库sql

mysqldump -u root -p db1 > /home/mysql8.0/mysql_data/sqlbak/db1_20231205.sql

3)停机5.7并关闭开机自启

systemctl stop mysqld
systemctl disable mysqld

~~

 2、启动8.0

1)启动docker镜像

docker run --name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=GXbtv3Hq%fKfYqDp -v /home/mysql8.0/mysql_data:/var/lib/mysql -d --restart=always -e MYSQL_DATABASE=mysql -e MYSQL_INNODB_ENGINE=InnoDB -e MYSQL_CHARSET=utf8mb4 mysql:latest --lower_case_table_names=1

2)没装docker的可以参考这个

https://blog.youkuaiyun.com/Single_for_life/article/details/133653113

~~

3、导入数据

1)进入容器

docker exec -it mysql8.0 bash
mysql -u root -p

2)解决navicat连接失败(8.0后加密算法问题)

use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'GXbtv3Hq%fKfYqDp';

3)创建数据库

create database `db1`;

说明: 库名用反向单引号括起来,不然中横线的库名就会创建失败;比如: 【db-biz1】就会失败,而【`db-biz1`】就可以成功

4)导入数据

use `db1`;
source /var/lib/mysql/sqlbak/db1.sql;
commit;

~~

4、其他补充

1)docker容器启动,镜像最好不要删除;如果删除了,root的navicat连接可能会失败,需要重新执行【解决navicat连接失败(8.0后加密算法问题)】这个操作;原因是没有通过改配置文件的方式修改编码规则;这个没有验证,理论上存在这种情况

2)数据库能装物理机还是装物理机

3)上面的步骤需要严格按照顺序执行,不然就会出现问题;比如:docker用到的3306,保留源端口,为的是业务应用不用修改端口无需打包重新部署;而必须停止5.7的服务,不然docker就会启动失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值