一.拉取MySQL5.7镜像
docker pull mysql:5.7

二.创建MySQL安装目录
mkdir /usr/local/mydata/mysql/log
mkdir /usr/local/mydata/mysql/data
mkdir /usr/local/mydata/mysql/conf
三.使用自定义的 custom.cnf 配置文件
1.创建custom.cnf文件
vim /usr/local/mydata/mysql/conf/custom.cnf
2.创建custom.cnf文件
[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-character-set-client-handshake
skip-name-resolve
四.创建容器
docker run --name mysql -v /usr/local/mydata/mysql/log:/var/log/mysql -v /usr/local/mydata/mysql/data:/var/lib/mysql -v /usr/local/mydata/mysql/conf:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
五.修改配置
1.进入容器
docker exec -it mysql bash
2.进入mysql服务
mysql -u root -p
3.修改密码(可能会有密码格式校验简单密码会提示错误)
1.ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
2.FLUSH PRIVILEGES;
4.允许外网访问
1.grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
2.FLUSH PRIVILEGES;
六.NAVICAT远程测试连接
注意如果是云服务器例如阿里云、腾讯云、华为云等要先配置安全组将端口开放才可以。或者启用了防火墙也要开启端口。

六.服务器连接
如果是同服务器应用容器连接mysql数据库,比如nacos服务,不要使用localhost或者127.0.0.1作为连接IP,在Docker中,127.0.0.1或localhost指的是当前容器,而不是宿主机。在Docker中,只有在同一个网络中的容器才能通过容器名进行通信。
1.创建docker网络
docker network create [network-name] //network-name为网络名词自定义即可
2.将创建好的容器加入网络中
docker network connect [network-name] [container-name] //container-name为容器名称如mysql、nacos等
3.检查你的容器是否在同一个网络中
docker network inspect [network-name]

这样就可以通过mysql容器名作为连接IP了

六.遇到的问题
我使用的是阿里云的云服务器ECS,但是过段时间mysql服务就无法使用Navicat访问了,重启服务器就可以了,比较奇怪,可能是更新了安全组需要更新吧

1976

被折叠的 条评论
为什么被折叠?



