1. 拉取镜像
# 拉取mysql8最新版本
docker pull mysql:8
2. 创建挂载目录
# 在宿主机中一次性创建多个目录
mkdir -p /docker/mysql/{data,conf,logs}
3. 配置
在宿主机的 /docker/mysql/conf 的目录下创建 my.conf 文件,其内容如下:
注意:以下配置仅供参考,可根据其自身情况进行调整
[mysqld]
character-set-server=utf8mb4 # 强制UTF-8编码
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password # 兼容旧客户端
lower_case_table_names=1 # 表名不区分大小写
max_connections=1000 # 最大连接数
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION # 严格模式
4.授权
# 授权于文件所有者(读、写、执行)权限
# 授权于文件所属组(读、执行)权限
# 授权于文件所属组(读、执行)权限
# -R 表示递归,即 /docker/mysql 目录及其子目录和文件都会应用此权限设置
chmod 755 -R /docker/mysql
5. 启动
# -d:表示后台运行
# --name mysql:表示容器名为mysql
# -p 3306:3306:端口映射(宿主机:容器)
# -v /docker/mysql/data:/var/lib/mysql:数据持久化
# -v /docker/mysql/conf:/etc/mysql/conf.d:配置注入
# -v /docker/mysql/logs:/var/log/mysql:日志收集
# -e MYSQL_ROOT_PASSWORD=root: 强制设置root用户密码为root
# -e TZ=Asia/Shanghai:时区校准
# --restart=unless-stopped:异常自动重启
docker run -d \
--name mysql \
-p 3306:3306 \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-v /docker/mysql/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
--restart=unless-stopped \
mysql:8