你通过 docker-compose.yml 启动了 MySQL 容器后,更改了 .yml 中的默认密码,但执行 docker-compose up -d 后发现并没有生效


 

核心原因:MySQL 容器的数据卷已经初始化过了

一旦 MySQL 容器第一次启动并成功初始化数据库(包括 root 密码),后续即使你修改了 .env.yml 文件中的密码,它也不会生效,因为数据已经写入到挂载的数据卷里了,MySQL 只在第一次初始化时读取环境变量。

 

🔍 举个例子

 

假设你第一次写的是:

Markup 全选
environment:
  - MYSQL_ROOT_PASSWORD=123456

后来你改成:

C# 全选
environment:
  - MYSQL_ROOT_PASSWORD=654321

然后执行:

Markup 全选
docker-compose up -d

你会发现密码仍然是 123456

🛠️ 解决办法

✅ 方案一:删除数据卷重新初始化(最干净)

 

注意:此操作会清空数据库数据!!!请提前备份!!!

Markup 全选
docker-compose down -v
docker-compose up -d

说明:

 

  • -v 会移除挂载的卷(也就是数据库数据),然后再 up 就会重新初始化并使用新的密码。

✅ 方案二:进容器后手动修改密码(保留现有数据)

如果你不想丢数据:

 

  1. 进入容器:

    Markup 全选
    docker exec -it your_mysql_container_name bash
  2. 登录 MySQL(使用旧密码):
    Markup 全选
    mysql -u root -p
  3. 修改 root 密码:
    Markup 全选
    ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
    FLUSH PRIVILEGES;
  4. 更新 .yml 文件中密码(保持一致)。

💡 小技巧:检查数据卷是否还在

 

你可以通过以下命令查看 volume:

Markup 全选
docker volume ls

或者查看具体绑定目录:

Markup 全选
docker inspect your_mysql_container_name

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:OpenCV资料记录
下一篇:虚拟机安装IKuai参考
评论列表

发表评论

评论内容
昵称:
关联文章

通过 docker-compose.yml 启动 MySQL 容器更改 .yml 默认密码执行 docker-compose up -d 发现没有生效
docker安装mysql
重新认识Docker Compose之Sidecar模式
Docker安装JIRA 7.2.2
Docker安装Redis
docker安装gitlab root密码重置
mysql安装
CentOS Docker命令集合
使用.NET 6开发TodoList应用(30)——实现Docker打包和部署
Javascript 通过 yield 和 promise 使异步变同步
手把手教学Dapr - 7. Actors
CentOS 7 安装 docker compose 教程
CentOS Docker安装gitlab
手把手教学Dapr - 9. 可观测性
CentOS Docker安装gitea
MySQL 8.0 绿色版安装
C# .net项目Docker方式部署
.NET Core生成没有Nugetdll文件
linux 启动jira 停止jira
手把手教学Dapr - 6. 发布订阅

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码