Docker部署MySQL镜像的完整指南

 更新时间:2025年07月11日 10:28:01   作者:慕木兮人可  
这篇文章主要为大家详细介绍了使用Docker部署MySQL镜像的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下

1.拉取镜像

# 拉取指定版本的MySQL镜像
docker pull mysql:8.0

2.创建挂载目录

# 自己创建好如下三个文件夹 路径任意
[root@iZuf6aigs7rxe6f6oifq7vZ mysql]# ll
总用量 12
drwxr-xr-x 2 root root 4096 7月   7 10:25 config
drwxr-xr-x 2 root root 4096 6月  26 16:43 data
drwxr-xr-x 2 root root 4096 6月  26 17:15 log

3.创建配置文件my.cnf

[client]
# 客户端默认字符集
default-character-set=utf8mb4
[mysql]
# 设置服务器默认字符集
default-character-set=utf8mb4
# 设置校验规则
collation-server=utf8mb4_general_ci
# 连接字符集
init_connect = 'SET NAMES utf8mb4'


[mysqld]
server-id = 1
port = 3306
default-storage-engine = InnoDB
# 允许最大的连接数
max_connections=1000
# 解决8.0版本 GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 设置东八区时区
default-time_zone = '+8:00'

# 最大错误连接数(达到后阻止主机连接)
max_connect_errors = 100
#  连接超时时间(秒)
connect_timeout = 60

更多可选配置

[client]
# 客户端默认字符集
default-character-set = utf8mb4

[mysql]
# MySQL命令行客户端默认字符集
default-character-set = utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 服务器唯一ID(主从复制时需要)
server-id = 1
# 服务端口
port = 3306
# 数据目录
datadir = /var/lib/mysql
# socket文件位置
socket = /var/run/mysqld/mysqld.sock
# 错误日志位置
log-error = /var/log/mysql/error.log
# 进程ID文件位置
pid-file = /var/run/mysqld/mysqld.pid
# 默认存储引擎
default-storage-engine = InnoDB
# 默认认证插件(兼容旧版客户端)
default_authentication_plugin = mysql_native_password
# 跳过名称解析(提高连接速度)
skip-name-resolve

### 字符集设置 ###
# 服务器默认字符集
character-set-server = utf8mb4
# 服务器默认排序规则
collation-server = utf8mb4_0900_ai_ci
# 连接字符集
init_connect = 'SET NAMES utf8mb4'

### 连接设置 ###
# 最大连接数(根据业务需求调整)
max_connections = 1000
# 最大错误连接数(达到后阻止主机连接)
max_connect_errors = 100
# 连接超时时间(秒)
connect_timeout = 10
# 交互式连接超时(秒)
interactive_timeout = 28800
# 非交互式连接超时(秒)
wait_timeout = 28800

### 内存设置 ###
# 每个连接的缓冲区大小
sort_buffer_size = 4M
# 每个连接的读缓冲区大小
read_buffer_size = 2M
# 每个连接的随机读缓冲区大小
read_rnd_buffer_size = 8M
# 连接线程缓冲区大小
join_buffer_size = 8M
# 线程堆栈大小
thread_stack = 256K
# 临时表内存大小
tmp_table_size = 64M
# 内存临时表最大值
max_heap_table_size = 64M

### InnoDB设置 ###
# InnoDB缓冲池大小(建议为物理内存的50-70%)
innodb_buffer_pool_size = 2G
# InnoDB缓冲池实例数(每个1GB左右)
innodb_buffer_pool_instances = 2
# InnoDB日志文件大小(建议256M-2G)
innodb_log_file_size = 512M
# InnoDB日志缓冲区大小
innodb_log_buffer_size = 16M
# InnoDB刷新日志方式(O_DIRECT避免双缓冲)
innodb_flush_method = O_DIRECT
# InnoDB事务提交方式(1最安全但最慢,2折中,0最快但不安全)
innodb_flush_log_at_trx_commit = 1
# InnoDB IO线程数
innodb_read_io_threads = 4
innodb_write_io_threads = 4
# InnoDB死锁检测
innodb_deadlock_detect = ON
# InnoDB锁等待超时(秒)
innodb_lock_wait_timeout = 50
# InnoDB严格模式
innodb_strict_mode = ON

### 日志设置 ###
# 慢查询日志
slow_query_log = 1
# 慢查询日志文件位置
slow_query_log_file = /var/log/mysql/mysql-slow.log
# 慢查询阈值(秒)
long_query_time = 2
# 记录未使用索引的查询
log_queries_not_using_indexes = 1
# 二进制日志格式(ROW格式最安全)
binlog_format = ROW
# 二进制日志过期天数
expire_logs_days = 7
# 二进制日志大小
max_binlog_size = 100M

### 安全设置 ###
# 禁止LOAD DATA LOCAL INFILE(防止安全风险)
local_infile = 0
# 禁止符号链接
symbolic-links = 0
# 密码验证策略
validate_password.policy = MEDIUM
# 密码最小长度
validate_password.length = 8
# 密码混合大小写要求
validate_password.mixed_case_count = 1
# 密码数字要求
validate_password.number_count = 1
# 密码特殊字符要求
validate_password.special_char_count = 1
# 禁止旧密码认证
secure_auth = ON

### 其他优化 ###
# 表定义缓存
table_open_cache = 2000
# 表定义缓存实例数
table_definition_cache = 1400
# 打开文件限制
open_files_limit = 65535
# 最大允许数据包大小
max_allowed_packet = 64M
# 批量插入缓冲区大小
bulk_insert_buffer_size = 16M
# 线程缓存大小
thread_cache_size = 100
# 主机名缓存大小
host_cache_size = 300

4.docker运行命令

# mysql 配置文件位置
# /kiki/mysql/config
# /kiki/mysql/data
# /kiki/mysql/log


# -d 后台运行
# --name 容器名称
# --privileged=true 赋予容器特权模式(访问主机所有设备)
# --restart=always 容器退出时自动重启(除非明确停止)
# -p 3306:3306 将主机的 3310 端口映射到容器的 3306 端口(MySQL 默认端口)
# -v /innomind/mysql/data:/var/lib/mysql 挂载数据目录
# -v /innomind/mysql/config:/etc/mysql/conf.d  挂载配置文件目录
# -v /innomind/mysql/log:/logs 挂载日志目录
# -e MYSQL_ROOT_PASSWORD=123456:设置 MySQL root 用户密码为 "123456"
# -e TZ=Asia/Shanghai:设置时区为亚洲/上海
# --lower_case_table_names=1:设置表名存储为小写(1 表示不区分大小写)
# mysql:8.0 指定要运行的镜像和版本

docker run  -d  \
--name mysql8 \
--privileged=true \
--restart=always \
-p 3306:3306 \
-v /kiki/mysql/data:/var/lib/mysql \
-v /kiki/mysql/config:/etc/mysql/conf.d  \
-v /kiki/mysql/log:/logs \
-e MYSQL_ROOT_PASSWORD=123456\
-e TZ=Asia/Shanghai mysql:8.0 \
--lower_case_table_names=1 

运行即可!!!

到此这篇关于Docker部署MySQL镜像的完整指南的文章就介绍到这了,更多相关Docker部署MySQL镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Idea部署远程Docker并配置文件

    Idea部署远程Docker并配置文件

    这篇文章给大家介绍Idea部署远程Docker并添加配置文件的方法及修改项目pom文件的代码解析,对idea部署远程docker相关知识感兴趣的朋友一起看看吧
    2021-06-06
  • 完美解决Windows10下无法对docker容器进行端口访问的操作

    完美解决Windows10下无法对docker容器进行端口访问的操作

    这篇文章主要介绍了完美解决Windows10下无法对docker容器进行端口访问的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • docker run启动的容器挂掉了数据怎么办

    docker run启动的容器挂掉了数据怎么办

    这篇文章主要介绍了docker run启动的容器挂掉了,数据怎么办,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Docker SSH连接docker容器的示例代码

    Docker SSH连接docker容器的示例代码

    这篇文章主要介绍了Docker SSH连接docker容器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Docker容器中启用SSH服务的方法步骤

    Docker容器中启用SSH服务的方法步骤

    本文主要介绍了Docker容器中启用SSH服务的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • docker rm -f 容器id 无效的问题解决

    docker rm -f 容器id 无效的问题解决

    当遇到“Error response from daemon: cannot stop container: d208b8055fd0: permission denied”错误,表示缺乏停止Docker容器的权限,本文就来介绍一下如何解决,感兴趣的可以了解一下
    2024-09-09
  • docker对网络和程序速度的影响解读

    docker对网络和程序速度的影响解读

    本文通过对比分析,测试了在宿主机和Docker容器中部署Spring Boot程序的性能差异,在网络延迟方面,Docker容器比宿主机慢0.1~0.2毫秒,在程序运行速度方面,宿主机和Docker容器的平均运行时间相近,单次运行时间存在较大差异,无法确定Docker容器在速度上优于宿主机
    2025-01-01
  • 使用Docker搭建MQTT服务器的过程详解

    使用Docker搭建MQTT服务器的过程详解

    这篇文章主要介绍了使用Docker搭建MQTT服务器的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 使用docker 部署mysql突然连接不上的问题及解决方法

    使用docker 部署mysql突然连接不上的问题及解决方法

    这篇文章主要介绍了使用docker 部署mysql,突然连接不上,要解决这个问题需要找到根本原因,对症治疗就好,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 详解ASP.NET Core 网站在Docker中运行

    详解ASP.NET Core 网站在Docker中运行

    本篇文章主要介绍了详解ASP.NET Core 网站在Docker中运行,非常具有实用价值,需要的朋友可以参考下
    2017-05-05

最新评论