Docker部署MySQL容器未生成指定默认数据库,求问题排查
问题分析与解决办法
问题原因
MySQL官方镜像的MYSQL_DATABASE、MYSQL_USER这类环境变量,只有在容器第一次启动且数据目录为空时才会触发初始化逻辑,用来自动创建指定数据库和用户。你执行docker-compose up --force-recreate -d只是重建了容器,但之前MySQL的数据卷(默认是Docker自动创建的匿名卷)已经存在,里面保存了之前的数据库数据,所以新容器启动时会跳过初始化流程,不会自动创建buckets_db数据库。
解决办法
方法1:清理旧数据卷后重新初始化(适合无现有数据需要保留的情况)
- 停止服务并彻底删除容器及关联的数据卷:
docker-compose down -v
- 重新启动服务:
docker-compose up -d
这次容器启动时数据卷为空,会读取.env中的配置自动创建buckets_db数据库和对应的用户。
方法2:手动创建数据库(适合需要保留现有数据的情况)
如果不想删除已有数据,可通过Adminer手动操作:
- 用root账号登录Adminer管理界面
- 执行以下SQL语句创建数据库并授权用户:
CREATE DATABASE buckets_db; GRANT ALL PRIVILEGES ON buckets_db.* TO 'buckets_user'@'%'; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者realtebo
相关产品推荐
相关产品推荐

