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 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

相关推荐
旺仔学长 哈哈15 分钟前
Spring Boot 智能停车场管理系统---附源码+数据库文档
数据库·spring boot·后端·智能停车场
用户83562907805130 分钟前
使用 Python 在 PDF 中绘制线条、矩形和自定义图形
后端·python
ClickHouseDB32 分钟前
ClickHouse托管Postgres:OLTP+OLAP,新能力解锁最佳数据平台
java·前端·数据库
wang_yb1 小时前
用方差阈值过滤掉“惰性特征”
python·ai·databook
数智化管理手记1 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
吴声子夜歌1 小时前
MongoDB 4.2——选择片键
数据库·mongodb
天天进步一点点2 小时前
QSqlQuery删除sqlite数据库执行drop数据表报错database table is locked unable to fetch row问题
数据库·oracle·sqlite
音视频工程实战2 小时前
PromptQL 新手入门与实战指南
数据库·sql·算法
清川渡水2 小时前
NL2SQL 的正确打开方式:从「AI 猜 SQL」到「置信度闭环」的工程化落地
数据库·人工智能·sql
RFID固定资产管理系统2 小时前
公司RFID管理系统揭秘
大数据·python