wsl 环境下用Docker 安装多版本MySQL

场景:为了模拟某项目的环境,且mySQL版本过低,本地使用的是8.0,需要5.0的,所以本地再部署一个。

1、拉取镜像,docker pull mysql5.7

2、在本地系统下,创建三个文件夹,分别是log 、conf、 data,同时需要在conf文件夹下创建my.cnf文件。

PS:mysql在5.0.17之后,不再提供my.cnf文件,但是可以自己创建。

创建三个文件夹的目的是将其进行挂载

XML 复制代码
docker run -d --rm --name mysql5.7 
-v D:\docker\mysql\log:/var/log/mysql 
-v D:\docker\mysql/data:/var/lib/mysql 
-v D:\docker\conf:/etc/mysql/conf.d  
-e MYSQL_ROOT_PASSWORD=123456 
-p 6306:3306 
-d mysql5.7

PS:

1、Windows下,执行长命令的时候,不要回车 加 " \ " ,windows识别不了,简单粗暴的方法及时直接将回车删掉。

2、-p 为端口映射,意思为将宿主机6306的端口映射到容器3306端口上【前提该服务确实是在3306端口启动的,否则你通过Navicat等工具无法连接上,但是mySQL服务能否启起来和-p配置无关系】

3、进入数据库,docker exec -it mysql5.7 bash

可以通过输入mysql -uroot -p123456 -e "show variables like 'character_set_server'"; 来查看你的my.cnf是否被正确读取了,默认是latin1,如果发现是这个,就要排查一下挂载是否正确。

我的my.cnf文件内容如下:

XML 复制代码
[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
init_connect="SET collation_connection = utf8mb4_unicode_ci"
init_connect="SET NAMES utf8mb4"
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-name-resolve

老生常谈:有的人说需要额外配置一下 root 的localhost 改成 % ,这里统一说一下,mysql5.7 是不需要配置的,docker run后,就支持远程连接。

可以通过进入mysql数据库, select Host,User from User; 发现root 已经是 % 了。

一个大坑:

由于本地启了多个mySQL服务,当时想着端口冲突,其中一个写了 -p 3306: 3306 ,另一个写了 3307:3307 ,导致3307的服务docker中是成功运行的,但是通过Navicat远程连接的时候一直连不上,后面将3306的那个服务关了之后,将3307的改成3306后,能成功脸上,恍然大悟.... 端口映射写错了。

前者是暴露在宿主机上的,即windows上,如果有多个服务,这个确实是要变动的。

后者是暴露在容器内的,每个容器是独立的,所以写一样的也没任何关系,他们之间没有联系,如果你写了3307,请确保你的服务确实是在该容器的3307端口运行的,否则报错:

2013 - Lost connection to MYSQL server at 'waitting for initial communication packet System error.

相关推荐
潮落拾贝3 小时前
k8s部署kafka三节点集群
容器·kafka·kubernetes
饱饱要坚持可持续发展观3 小时前
docker 拉取本地镜像
docker
我就要用Cx3303 小时前
配置docker常见问题
运维·docker·容器
hsjkdhs5 小时前
MySQL 数据类型与运算符详解
数据库·mysql
疯子@1236 小时前
nacos1.3.2 ARM 版容器镜像制作
java·linux·docker·容器
yuxb738 小时前
Docker 学习笔记(七):Docker Swarm 服务管理与 Containerd 实践
笔记·学习·docker
沐雨风栉10 小时前
自建云音乐服务器:Navidrome+cpolar让无损音乐随身听
运维·服务器·redis·缓存·docker·容器
武子康10 小时前
Java-122 深入浅出 MySQL CAP理论详解与分布式事务实践:从2PC到3PC与XA模式
java·大数据·数据库·分布式·mysql·性能优化·系统架构
油条不卖12 小时前
搞坏了docker 双系统下重装ubuntu22.04
运维·docker·容器