如何在Docker Compose中修改MongoDB密码?修改后不生效求助
问题原因及解决方法
为什么修改MONGO_INITDB_ROOT_PASSWORD不生效?
MONGO_INITDB_ROOT_PASSWORD、MONGO_INITDB_ROOT_USERNAME这类环境变量仅在MongoDB首次初始化(对应数据卷为空)时触发配置。你的服务挂载了本地持久化卷/data/mongodb-dev:/data/db,第一次启动容器时已经在该卷中创建了包含旧密码的用户数据,后续修改环境变量重启容器,MongoDB不会重新执行初始化流程,因此密码仍为旧值。
解决方案
方案1:清空数据卷重新初始化(会丢失现有数据,适合测试环境)
- 停止并删除容器:
docker-compose down - 删除本地数据卷中的MongoDB数据:
rm -rf /data/mongodb-dev/* - 重新启动容器:
docker-compose up -d
此时新密码会生效,但原有数据库数据会被清空。
方案2:在运行容器内直接修改密码(保留数据,适合生产/有数据的环境)
- 使用旧密码进入MongoDB命令行:
docker exec -it mongo-dev mongosh -u root -p old-pass - 在MongoShell中执行密码修改命令:
use admin; db.changeUserPassword("root", "new-pass"); - 退出Shell后,即可使用新密码连接数据库。
内容的提问来源于stack exchange,提问作者Saeed Pakdelnia
相关产品推荐
相关产品推荐

