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

Node.js使用Mongoose连接MongoDB时认证失败问题

解决Mongoose连接MongoDB时的认证失败问题

可能的原因及修复方案

1. 显式指定连接选项(优先尝试)

部分情况下,Mongoose对URL中的authSource参数解析存在兼容问题,建议将认证相关配置单独放在连接选项中:

mongoose.connect("mongodb://user:password@domain:27017/database", {
  authSource: "admin",
  // 针对MongoDB 5+和Node.js 20,显式指定认证机制适配新版本
  authMechanism: "SCRAM-SHA-256"
})
.then(() => {
  console.log("connected to mongodb");
  httpServer.listen(4001, () => {
    console.log("API is listening on port 4001");
  });
})
.catch((error) => {
  console.error("Error connecting to MongoDB:", error);
});

2. 升级Mongoose版本

Node.js 20.14.0需要搭配较新的Mongoose版本,旧版(如v6及以下)可能存在认证流程兼容bug,建议升级到v7.x或更高版本:

npm install mongoose@latest

3. 确认用户目标库权限

虽然mongosh能成功连接,但需确保该用户对目标database拥有读写权限:
在mongosh中执行以下命令检查:

use admin
db.getUser("user")

查看返回结果的roles字段,确认包含{ role: "readWrite", db: "database" },若没有则执行以下命令赋权:

db.grantRolesToUser("user", [{ role: "readWrite", db: "database" }])

4. 排查URL特殊字符编码

如果密码包含@、:、/等特殊字符,必须先进行URL编码,例如密码pass@word要转换为pass%40word后再放入连接字符串。


内容的提问来源于stack exchange,提问作者André Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:24:53