一、安装mysql
1、使用docker下载mysql镜像源
sudo docker pull mysql:5.7 #下载最新版本后面不加上:版本号
如果出现拉去镜像错误可参考文章(https://blog.csdn.net/weixin_39764056/article/details/145042307)
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2、查看mysql镜像源
sudo docker images

3、创建启动mysql容器
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /mydata/mysql/conf:/etc/mysql/conf.d/ \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/local/mysql/log:/var/log/mysql \
mysql:5.7
docker run :创建启动容器
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql/conf.d/:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
-d mysql:5.7:使用那个版本创建启动的容器
--restart=always:自启动容器
4、查看创建的容器(查看容器发现容器不是up状态,可使用docker logs mysql 查看日志是那儿出现的问题,一般情况是没有找到对应的文件目录,需要提前创建)
docker ps # 查看启动的容器
docker ps -a # 查看所有的容器,包含停止的
5、测试连接Navicat



二、配置mysql容器
1、可进入mysql容器,查看mysql容器内的文件
docker exec -it mysql /bin/bash


2、exit退出mysql容器,在虚拟机中配置文件映射到mysql容器内,创建配置文件my.cnf
vi /mydata/mysql/conf/my.cnf # 是没有my.cnf文件的,创建后里面是空的,插入以下内容后保存
[mysqld]
character-set-server=utf8 # 字符集设为 utf8
collation-server=utf8_unicode_ci # 排序规则对应 utf8,而非 latin1
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
3、保存退出后重启mysq容器(重启后发现容器关闭可能是因为里面的字符错误或者格式代码与mysql版本不适配,需要重新编辑my.cnf里面的内容再重启容器)
docker restart mysql

4、查看mysql容器内部的文件映射情况
进入文件夹/etc/mysql/conf.d,使用命令cat my.cnf即可
