使用MongoDB Shell连接时遇MongoServerError认证失败求助
解决MongoDB Shell认证失败(MongoServerError: bad auth)的步骤
核心排查方向
主板型号(技嘉H510M)和VS Code插件不影响MongoDB认证逻辑,无需在这两个方向浪费时间,重点聚焦以下几点:
1. 确认账号密码与认证数据库匹配
- 连接时必须指定用户所属的认证数据库(默认是
admin,若用户创建在其他库需明确指定) - 错误示例:未指定认证库导致匹配失败
mongosh --username your_user --password your_pass - 正确命令(假设用户创建在
admin库):mongosh --username your_user --password your_pass --authenticationDatabase admin - 远程连接需补充主机和端口:
mongosh "mongodb://your_host:27017" --username your_user --password your_pass --authenticationDatabase admin
2. 检查用户存在性与权限
- 本地无认证登录(若允许)后,执行命令验证用户:
use admin db.getUser("your_user") - 返回
null说明用户不存在,需创建:db.createUser({ user: "your_user", pwd: "your_pass", roles: [{ role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase"] }) - 用户存在时,确认其权限覆盖你要访问的数据库。
3. 避免密码转义问题
- 密码含特殊字符(如
!@#$)时,用单引号包裹避免转义错误:mongosh --username your_user --password 'your_pass_with_special_chars' --authenticationDatabase admin - 优先用交互模式输入密码,规避明文泄露和转义问题:
执行后按提示手动输入密码即可。mongosh --username your_user --authenticationDatabase admin
4. 检查MongoDB认证配置
- 打开配置文件(通常为
/etc/mongod.conf),确认已开启认证:security: authorization: enabled - 若刚开启认证,重启MongoDB服务生效:
sudo systemctl restart mongod
5. 验证URI连接格式
- 使用URI连接时,需明确指定
authSource参数:mongosh "mongodb://your_user:your_pass@your_host:27017/?authSource=admin"
内容的提问来源于stack exchange,提问作者Sayyid Ali Aljufri
相关产品推荐
相关产品推荐

