1.拉取mysql最新版
docker pull mysql:latest
2.使用 -p 创建多级目录,即 mydata 目录下创建 mysql 目录, mysql 目录下又创建 log 、data 、conf 三个目录:
mkdir -p /storage/docker/mysql/log
mkdir -p /storage/docker/mysql/data
mkdir -p /storage/docker/mysql/conf
3.创建custom.cnf 配置文件
MySQL默认配置文件 /etc/my.cnf 末尾中有这么一行:!includedir /etc/mysql/conf.d/ ,意思是,在 /etc/mysql/conf.d/ 目录下新建自定义的配置文件 custom.cnf也会被读取到,而且还是优先读取的(Docker Hub中的MySQL教程文档)
vim storage/docker/mysql/conf/custom.cnf
4.将下面配置写入配置文件
[mysqld]
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake
default_authentication_plugin=mysql_native_password
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
4.创建容器:将配置选项作为标志传递给mysqld,MYSQL_ROOT_PASSWORD 指定密码
docker run --name mysql \
-v /storage/docker/mysql/log:/var/log/mysql \
-v /storage/docker/mysql/data:/var/lib/mysql \
-v /storage/docker/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
-d mysql \
--init-connect="SET collation_connection=utf8mb4_0900_ai_ci" \
--init-connect="SET NAMES utf8mb4" \
--skip-character-set-client-handshake
使用docker ps命令查看是否启动成功
使用navcat连接查看是否成功,配置生效是否生效