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.

相关推荐
harmony&14 小时前
Kubernetes 实战:认证授权、集群 Dashboard 与动态卷供应全解析
云原生·容器·kubernetes
数字化小张15 小时前
Docker镜像优化——从1GB到100MB的瘦身实践
docker
java_logo15 小时前
Docker 部署 MinIO:轻松搭建 S3 兼容对象存储平台
运维·docker·容器·对象存储·minio·轩辕镜像·minio部署
小镇敲码人15 小时前
【深入浅出】之Qt 事件系统实战:鼠标、键盘、滚轮、窗口与定时器事件
数据库·qt·网络协议·mysql·http
Sirens.15 小时前
MySQL数据库:索引
数据库·mysql
2601_9620725015 小时前
大数据-234 离线数仓 - 异构数据源 DataX 将数据 从 HDFS 到 MySQL
大数据·mysql·hdfs
2601_9620739716 小时前
【MySQL】全面学习数据库查询技巧:查询指令深度学习指南
数据库·学习·mysql
报错小能手17 小时前
Kubernetes入门实战课 4
云原生·容器·kubernetes
NJCloud17 小时前
Docker 镜像管理:分层结构、构建优化与最佳实践
java·docker·容器
harmony&17 小时前
Docker 容器技术从入门到实战:生态系统、安装部署与架构详解
docker·容器·架构