使用Docker部署MongoDB时MongoDB Compass持续提示认证失败
解决Docker部署MongoDB后Compass认证失败的问题
针对你遇到的问题,按以下步骤排查解决:
确认Compass连接字符串的正确性
必须指定认证数据库为admin,正确的连接字符串是:mongodb://root:root@localhost:27017/?authSource=admin因为通过
MONGO_INITDB_ROOT_USERNAME创建的根用户默认存储在admin数据库中,不指定authSource的话,Compass会默认使用test数据库进行认证,自然会失败。检查容器内MongoDB的初始化日志
执行命令查看容器日志,确认用户是否正常创建:docker logs mernstackdb日志中如果出现类似
Successfully created user: { user: "root", roles: [ { role: "root", db: "admin" } ] }的内容,说明用户初始化没问题。直接进入容器验证用户登录
执行命令进入容器内的MongoShell,测试用户是否能正常登录:docker exec -it mernstackdb mongosh -u root -p root --authenticationDatabase admin如果能成功进入Shell,说明用户配置没问题,问题出在Compass的连接设置上。
检查Compass手动连接的配置项
如果是手动填写连接信息,务必在「Authentication」选项卡中:- 认证方法选择「Username/Password」
- 用户名填
root,密码填root - 认证数据库必须填
admin(这是最容易忽略的点) - 主机填
localhost,端口填27017
确认本地端口未被占用
检查27017端口是否被其他服务占用:- Windows:
netstat -ano | findstr :27017 - Mac/Linux:
lsof -i :27017
如果有其他进程占用,停止该进程后重新启动MongoDB容器。
- Windows:
内容的提问来源于stack exchange,提问作者physeeks
相关产品推荐
相关产品推荐

