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.

相关推荐
数据技术说几秒前
MySQL 迁移实战——如何实现真正的"零改造"平滑切换
mysql
lichenyang4532 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4532 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4532 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4532 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
唐青枫4 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
小满8784 天前
5.Mysql事务隔离级别与锁机制
mysql
元Y亨H5 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
这个DBA有点耶6 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵6 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql