You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose中修改MongoDB密码?修改后不生效求助

问题原因及解决方法

为什么修改MONGO_INITDB_ROOT_PASSWORD不生效?

MONGO_INITDB_ROOT_PASSWORD、MONGO_INITDB_ROOT_USERNAME这类环境变量仅在MongoDB首次初始化(对应数据卷为空)时触发配置。你的服务挂载了本地持久化卷/data/mongodb-dev:/data/db,第一次启动容器时已经在该卷中创建了包含旧密码的用户数据,后续修改环境变量重启容器,MongoDB不会重新执行初始化流程,因此密码仍为旧值。


解决方案

方案1:清空数据卷重新初始化(会丢失现有数据,适合测试环境)

  1. 停止并删除容器:
    docker-compose down
    
  2. 删除本地数据卷中的MongoDB数据:
    rm -rf /data/mongodb-dev/*
    
  3. 重新启动容器:
    docker-compose up -d
    

此时新密码会生效,但原有数据库数据会被清空。

方案2:在运行容器内直接修改密码(保留数据,适合生产/有数据的环境)

  1. 使用旧密码进入MongoDB命令行:
    docker exec -it mongo-dev mongosh -u root -p old-pass
    
  2. 在MongoShell中执行密码修改命令:
    use admin;
    db.changeUserPassword("root", "new-pass");
    
  3. 退出Shell后,即可使用新密码连接数据库。

内容的提问来源于stack exchange,提问作者Saeed Pakdelnia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:40:04