最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何解决Navicat连接MongoDB身份验证失败问题_通过配置SCRAM-SHA-1协议
时间:2026-07-13 09:36:50 编辑:袖梨 来源:一聚教程网
Authentication failed大概率是SCRAM-SHA-256与旧版Navicat不兼容,必须在mongod.conf中配置disableScramSHA256:true并重启服务,再用mechanisms:["SCRAM-SHA-1"]重建用户,否则凭证哈希仍为SHA-256格式导致认证失败。
navicat 连接 mongodb 报 authentication failed,如果确认用户名、密码、认证数据库都正确,大概率是 scram-sha-256 与 navicat 不兼容——此时强制降级到 scram-sha-1 是最直接有效的绕过方式,但必须在服务端配置,不能仅靠客户端设置。
为什么 SCRAM-SHA-1 配置必须改 mongod.conf?
MongoDB 自 4.0 起支持 SCRAM-SHA-1,但 6.0+ 默认强制启用 SCRAM-SHA-256,且不再接受客户端协商降级。Navicat ≤16.0.17 无法解析 SHA-256 挑战响应,连接时直接被服务端拒绝,错误里不会明说机制不匹配,只报泛泛的 Authentication failed。
关键点:这不是 Navicat 的“选项”能调出来的,必须让 MongoDB 主动用 SHA-1 签发凭证。
- 修改
/etc/mongod.conf(Linux)或mongod.cfg(Windows),在security下添加:
security: authorization: enabled sasl: hostName: your-hostname # 可选,若报 SASL 错误再加 serviceName: mongodb # 强制使用 SHA-1 认证机制 enableLocalhostAuthBypass: false
- 在
setParameter区块中显式指定(MongoDB ≥4.2 支持):
setParameter: scramIterationCount: 10000 # 关键:禁用 SHA-256,只留 SHA-1 disableScramSHA256: true
- 保存后重启服务:
sudo systemctl restart mongod(Linux)或net stop MongoDB && net start MongoDB(Windows)
用户必须用 SCRAM-SHA-1 方式重新创建
旧用户即使密码没变,只要是在 SHA-256 启用后创建的,其凭证哈希就是 SHA-256 格式,降级配置后仍无法登录。必须删掉重来。
- 先删除原用户(以
admin库为例):
use admindb.dropUser("myuser")
- 再创建,明确指定机制(MongoDB 4.0+ 支持):
db.createUser({ user: "myuser", pwd: "mypass", roles: [{ role: "readWrite", db: "myapp" }], mechanisms: ["SCRAM-SHA-1"] // 必须写这行})
- 验证是否生效:
db.getUser("myuser")返回结果中应含"mechanisms" : ["SCRAM-SHA-1"]
Navicat 连接配置里不能留空“Authentication Database”
即使启用了 SCRAM-SHA-1,如果 Navicat 的 Authentication Database 字段为空或填错,仍会报错。MongoDB 不会自动 fallback 到 admin。
- 该字段值必须与用户创建所在的数据库完全一致,大小写敏感
- 管理员用户一定在
admin库创建,所以这里必须填admin - 普通业务用户若在
myapp库创建,则此处填myapp,不是admin - Navicat for MongoDB v16.0.17 及更早版本没有“认证机制”下拉菜单,它只认 SHA-1 —— 所以你配对了服务端,它自然就对了
这个方案的代价和边界
启用 disableScramSHA256: true 后,所有新用户只能用 SHA-1;已有 SHA-256 用户失效,必须重建。SHA-1 虽仍被 MongoDB 官方支持,但 NIST 已建议弃用,生产环境长期使用存在合规风险。
真正干净的解法是升级 Navicat 到 v17+,它原生支持 SHA-256。但如果受限于 license 或内部策略无法升级,那服务端强制 SHA-1 就是最少改动、最高成功率的实操路径——只是别忘了,每次新建用户都得显式带 mechanisms: ["SCRAM-SHA-1"],漏掉就又连不上。
相关文章
- 王者荣耀世界零氪玩家如何生存 07-28
- 快手极速版怎么绑定手机号 07-28
- 明日方舟和轻松小熊联动活动内容一览 07-28
- 逆战未来黎明之光 逆战未来黎明之光玩法机制与新手入门指南 07-28
- 植物大战僵尸融合版毁灭土豆地雷介绍 07-28
- 逆战未来飓风之龙 逆战未来飓风之龙武器获取方法详解 07-28