10、Docker Compose 安装 MySQL

🐳 使用 Docker Compose 安装 MySQL(含配置详解与常见问题)

标签:#DockerCompose #MySQL #数据库部署 #后端开发 #运维入门 #配置详解
适合读者:开发者、DevOps、新手运维人员


📌 一、前言

在日常开发与部署中,我们经常需要快速搭建一个独立的 MySQL 实例。相比手动安装,使用 Docker Compose 能以最小成本完成部署、启动、关闭、迁移等一整套操作。


🧱 二、目录结构

docker-mysql/
├── docker-compose.yml
└── my.cnf             # 可选:自定义配置文件

⚙️ 三、docker-compose.yml 配置详解

version: "3.9"services:mysql:image: mysql:8.0container_name: mysql8restart: alwaysports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: root123456       # ✅ root用户密码(必填)MYSQL_DATABASE: demo_db               # ✅ 自动创建数据库MYSQL_USER: dev_user                  # ✅ 创建新用户MYSQL_PASSWORD: dev_pass              # ✅ 用户密码volumes:- ./data:/var/lib/mysql               # ✅ 数据持久化路径- ./my.cnf:/etc/mysql/conf.d/my.cnf   # ✅ 可选:自定义配置networks:- mysql_netnetworks:mysql_net:driver: bridge

🔍 参数详解:

配置项含义
image使用官方的 mysql:8.0 镜像
container_name容器名称
restart: always容器异常退出后自动重启
ports主机:容器 端口映射,默认 MySQL 为 3306
environment配置 MySQL 初始参数(环境变量)
volumes挂载数据和配置,确保持久化
networks自定义网络,支持多服务联通

🧾 四、my.cnf 自定义配置(可选)

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

将其保存为 my.cnf 文件后自动生效,常用于统一字符集、SQL严格模式等。


🚀 五、启动与使用

1️⃣ 启动容器

docker compose up -d

-d 表示后台运行

2️⃣ 查看运行状态

docker ps

3️⃣ 登录 MySQL

docker exec -it mysql8 mysql -uroot -p

输入 root123456 进入

在这里插入图片描述


🧪 六、连接测试(使用客户端)

在 Navicat 或 DBeaver 中添加新连接:

  • 主机地址:虚拟机ip
  • 端口:3306
  • 用户名:dev_user
  • 密码:dev_pass
  • 数据库:demo_db

在这里插入图片描述


❗ 七、常见问题处理

问题解决方式
容器启动报错 Can't connect to local MySQL server检查端口是否被占用,或数据目录权限问题
Access denied for user检查环境变量用户名/密码是否一致
字符集乱码使用 my.cnf 配置为 utf8mb4
Docker 数据未持久化确认 ./data 已正确挂载

🛠 八、最佳实践建议

  • ✅ 使用 volumes 绑定宿主机数据,避免数据丢失
  • ✅ 启用 mysql.cnf 进行统一配置管理
  • ✅ 推荐使用非 root 用户连接数据库
  • ✅ 配合 phpMyAdmin 或其他服务通过 Compose 一键启动集群

📦 九、扩展:一键添加 phpMyAdmin(可选)

  phpmyadmin:image: phpmyadmin/phpmyadminrestart: alwaysports:- "8080:80"environment:PMA_HOST: mysql8depends_on:- mysqlnetworks:- mysql_net

🔍 参数详解:

配置项含义
phpmyadmin官方 phpMyAdmin 镜像
ports: "8080:80"主机8080端口映射到容器80端口
PMA_HOST: mysql8phpMyAdmin 连接数据库主机名,应该与 mysql 服务名一致
depends_on: mysql启动顺序控制,先启动 MySQL
networks: mysql_net需要保证和mysql在同一网络

启动后访问 http://虚拟机ip:8080 登录可视化管理页面。
输入mysql的用户名和密码登录:root/root123456

在这里插入图片描述
在这里插入图片描述


📚 十、结语

使用 Docker Compose 部署 MySQL 极大简化了环境配置和版本控制,不论是本地开发、测试还是 CI/CD 环境搭建,都能快速、高效、可靠地完成数据库部署任务。

👍 如果你觉得本文对你有帮助,欢迎 点赞 + 收藏 + 关注我,后续将持续更新更多 Docker、MySQL、SpringBoot 等技术实战文章!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91569.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dynamic A(D)算法深度剖析:动态环境下的路径规划革新

Dynamic A*(D*)算法深度剖析:动态环境下的路径规划革新 文章目录 Dynamic A*(D*)算法深度剖析:动态环境下的路径规划革新 1. 引言:动态路径规划的核心挑战与解决方案 1.1 动态环境的本质特征 1.2 D * 算法的诞生与核心价值 2. D * 算法核心原理深度解析 2.1 反向搜索机制…

前端框架Vue3(四)——组件通信及其他API

组件通信组件关系传递方式父传子1. props2. v-model3. $refs4. 默认插槽、具名插槽子传父1.props2.自定义事件3.v-model4.parent5.作用域插槽祖传孙、孙传祖1.$attrs2.provide、inject兄弟间、任意组件间1.mitt2.pinia【props】 概述:props是使用频率最高的一种通信…

07【C++ 初阶】类和对象(中篇) --- 类的默认成员函数

文章目录前言类的6个默认成员函数1.构造函数1.1 构造函数特性1.1.1 函数名与类名相同1.1.2 无返回值1.1.3 对象实例化时编译器自动调用对应的构造函数1.1.4 构造函数可以重载1.1.5 默认构造只能有一个1.1.6 默认构造的必要性1.2 构造函数的初始化列表2.析构函数2.1 析构函数特性…

第二次CISSP考试通过!

今天我终于临时通过了 CISSP 考试!这第二次的精神压力一点也不比第一次小。我在第 101 道题 时通过,还剩大约 30 分钟。我当时真的以为自己又要像上次那样时间不够了。第一次考试的失败经历:第一次考试是我刚参加完为期 5 天的强化 Boot Camp…

USRP捕获手机/路由器数据传输信号波形(上)

目录: USRP捕获手机/路由器数据传输信号波形(上) USRP捕获手机/路由器数据传输信号波形(中) USRP捕获手机/路由器数据传输信号波形(下) 一、前期准备 1.1 场景与系统 手机、路由器与天线的…

基于STM32F103的FM1702驱动程序

基于STM32F103微控制器与复旦微电子FM1702SL射频读卡芯片的驱动开发方案,整合了硬件配置、寄存器操作和通信协议实现:一、硬件连接设计 1. 管脚映射表FM1702SL引脚STM32F103引脚功能说明VDD3.3V电源输入GNDGND地线SCKPA5(SPI1_SCK)SPI时钟MISOPA6(SPI1_M…

京东商品评论API指南

一、引言京东商品评论API(JD.item_review)是京东开放平台提供的重要接口,允许开发者获取商品的详细评论数据。通过该接口可以获取包括评论内容、评分、评论时间、用户昵称等信息,为商品分析、用户行为研究等提供数据支持‌。二、接口概述1. 接口基本信息…

网络编程概述与UDP编程

一、 网络编程概述 1.1 概述 在现代软件开发与系统交互场景里,基于 Socket 的网络多进程通信占据核心地位,其适用场景广泛且深入到各类数字化交互中: 直播场景:主播端通过 Socket 建立的网络连接,将音视频流以数据包…

新手教程:用外部 PostgreSQL 和 Zookeeper 启动 Dolphinscheduler

本文将带你一步步通过外部PostgreSQL和Zookeeper来启动Apache DolphinScheduler。无论你是新手还是有经验的开发者,都能轻松跟着这些步骤在Linux/Unix环境中完成安装和配置。除了常见的安装步骤,我们还会分享一些集群部署的技巧,让你轻松扩展…

安宝特案例丨AR+AI赋能轨道交通制造:破解人工装配难题的创新实践

在轨道交通装备制造领域,小批量、多品种的生产特性与高度依赖人工经验的作业模式长期并存,导致效率瓶颈与质量隐患并存。安宝特通过AR(增强现实)AI(人工智能)技术融合,在螺栓紧固、内饰装配、制…

基于LSTM-GRU混合网络的动态解析:美联储维稳政策与黄金单日跌1.5%的非线性关联

摘要:本文通过构建多因子量化模型,结合自然语言处理(NLP)技术对美联储政策文本进行情绪分析,解析经济数据、市场情绪及宏观环境对黄金价格的复合影响机制。研究基于LSTM时间序列预测框架,验证关键事件对金价…

RabbitMQ消息确认机制有几个confirm?

RabbitMQ 的消息确认机制中,“confirm” 这个词主要出现在两个关键环节,对应两种确认:✅ 两种 confirm(确认)机制确认类型触发方说明Publisher Confirm(生产者确认)生产者 → Broker消息是否成功…

vue项目启动时因内存不足启动失败

可以使用increase-memory-limit跟npm install cross-env插件npm install increase-memory-limit npm install cross-env安装后需要在package.json文件中加入如下代码"scripts": {"fix-memory-limit": "cross-env LIMIT3072 increase-memory-limit&quo…

WEditor:高效的移动端UI自动化脚本可视化编辑器

WEditor:高效的移动端UI自动化脚本可视化编辑器前言一、核心特性与优势1. 可视化操作,降低门槛2. 跨平台支持3. 丰富的控件层级展示4. 快捷键高效操作5. 开源可扩展二、安装与环境配置1. 环境准备Android 设备用户需额外准备ADB 安装与配置步骤2. 安装依…

面试高频题 力扣 283.移动零 双指针技巧 原地修改 顺序保持 C++解题思路 每日一题

目录零、题目描述一、为什么这道题值得你花几分钟看懂?二、题目拆解:提取其中的关键点三、明确思路:双指针的巧妙配合四、算法实现:双指针的代码演绎五、C代码实现:一步步拆解代码拆解时间复杂度和空间复杂度六、实现过…

arrch64架构下调用pyvista报错

arrch64架构下调用pyvista报错 问题 python编程使用到了pyvista&#xff0c;使用conda新建了环境&#xff0c;但是使用的时候报错 Traceback (most recent call last):File "/home/ztl/MGGBSAR/src/trans_las_3D.py", line 16, in <module>import pyvista as p…

功能强大编辑器

时间限制&#xff1a;1秒 内存限制&#xff1a;128M题目描述你要帮助小可创造一个超级数字编辑器&#xff01;编辑器依旧运行在Linux下&#xff0c;因此你只能通过指令去操控他。指令有五种&#xff1a; In X 表示在光标左侧插入一个数字 Del 表示删除光标左侧一个数字 …

【力扣】面试经典150题总结01-数组/字符串

1.合并两个有序数组&#xff08;简单&#xff09;要求直接在num1上操作&#xff0c;已经预留了空间&#xff0c;所以直接倒着从大到小插入。当其中一个数组遍历完&#xff0c;就把另一个数组剩余的部分插入。2.移除元素&#xff08;简单&#xff09;要求原地移除数组中所有val元…

基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(一)

目录 一、OLAP 与 Impala 简介 1. OLAP 简介 2. Impala 简介 &#xff08;1&#xff09;Impala 是什么 &#xff08;2&#xff09;为什么要使用 Impala &#xff08;3&#xff09;适合 Impala 的使用场景 &#xff08;4&#xff09;Impala 架构 &#xff08;5&#xff…

PyTorch L2范数详解与应用

torch.norm 是什么 torch.norm(dot_product, p=2, dim=-1) 是 PyTorch 中用于计算张量 L2 范数的函数, 1. 各参数解析 dot_product:输入张量,在代码中形状为 [batch_size, seq_len](每个元素是 token 隐藏状态与关注向量的点积)。 p=2:指定计算L2 范数(欧几里得范数)…