【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.csdn.net/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就会启动失败

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker安装MySQL 5.7,可以使用以下命令创建容器: docker run --privileged=true -p 3306:3306 --name mysql -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/logs:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=223345 -d mysql:5.7 该命令将创建一个名为mysql的容器,并将主机的3306端口映射到容器的3306端口。配置文件、日志文件和数据文件将在主机上的/docker/mysql目录中进行持久化存储。容器将使用MySQL 5.7镜像,并设置root用户的密码为223345。 要在Docker安装MySQL 8.0,可以使用以下命令创建容器: docker run --privileged=true -p 3307:3306 --name mysql8 -v /docker/mysql8/conf:/etc/mysql/conf.d -v /docker/mysql8/logs:/var/log/mysql -v /docker/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=223345 -d mysql:8.0 该命令将创建一个名为mysql8的容器,并将主机的3307端口映射到容器的3306端口。配置文件、日志文件和数据文件将在主机上的/docker/mysql8目录中进行持久化存储。容器将使用MySQL 8.0镜像,并设置root用户的密码为223345。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [docker安装myql5.7和mysql8.0](https://blog.csdn.net/weixin_65349299/article/details/125860971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [docker安装mysql5.7及8.0、redis](https://blog.csdn.net/qq_45524787/article/details/126358732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值