mysql在docker容器中如何部署_利用docker-compose快速启动

MySQL容器必须挂载/var/lib/mysql到命名卷以持久化数据,root密码须通过MYSQL_ROOT_PASSWORD设置,配置应挂载到/etc/mysql/conf.d/,并显式声明端口与时区。docker-compose.yml 里 mysql 服务必须显式挂载 /var/lib/mysql不挂载会导致容器重启后数据全丢------因为 MySQL 默认把数据写在容器内文件系统,而 Docker 容器销毁即清空。哪怕只跑测试,也建议用命名卷,别依赖默认匿名卷。实操建议:用 docker volume create mysql-data 提前建好卷,再在 docker-compose.yml 中通过 volumes 映射到 /var/lib/mysql不要直接映射宿主机目录(比如 ./mysql-data:/var/lib/mysql),容易因文件权限问题导致 MySQL 启动失败:容器内 mysql 用户(UID 999)可能没权限读写宿主机目录如果非要用宿主机路径,得提前 chown -R 999:999 ./mysql-data,且该路径不能是 root 用户的家目录(某些 Linux 发行版会拒绝挂载)root 密码必须通过 MYSQL_ROOT_PASSWORD 环境变量传入MySQL 官方镜像完全忽略 my.cnf 里的 password 配置,也不接受 mysql_secure_installation 交互式设置。不设这个变量,容器会卡在初始化阶段并报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost'。常见错误现象:容器反复重启,日志里出现 mysqld: Can't read dir of '/etc/mysql/conf.d/' ------ 实际是初始化失败的副产物,根源仍是密码没配用 MYSQL_PASSWORD 或 MYSQL_USER 单独配置但漏了 MYSQL_ROOT_PASSWORD,一样起不来密码含特殊字符(如 @、/、:)时,必须用单引号包裹整个值,否则 YAML 解析失败端口冲突和时区要手动指定 ports 与 environmentDocker 默认不暴露端口,不显式写 ports 就连不上;MySQL 容器默认用 UTC 时区,跟业务应用时区不一致会导致 NOW()、时间字段插入出错。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

相关推荐
CTA量化套保2 小时前
近期零基础量化学习:先分阶段,再用 AI 检查缺口
人工智能·python
清水白石0083 小时前
Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复
linux·网络·python
杨运交3 小时前
[060][调度模块]Redisson vs Redis 原生锁:两种分布式锁实现深度对比
数据库·redis·分布式
FungLeo3 小时前
Node 后端实战 · 列表查询到底怎么写?一个通用 DSL 封装,过滤分页排序一次搞定
数据库·node.js·serverless·dsl 封装·通用列表查询
Elias不吃糖3 小时前
Langfuse 入门:Trace、Prompt、Dataset、Experiment、Evaluator
前端·python·prompt·langfuse
TechWayfarer3 小时前
批量查IP归属地,在线API、脚本、离线库怎么选?三种方案实测对比
网络·python·网络协议·tcp/ip
抓蛙师3 小时前
多租户 tenant_id SQL 注入漏洞分析与应急响应报告
数据库·sql
ACP广源盛139246256733 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 私有化部署下 GSV2221 视频转换芯片机遇分析
大数据·数据库·人工智能
七牛开发者4 小时前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
河南凹凸环境艺术设计5 小时前
性价比高的民宿酒店设计企业
大数据·人工智能·python