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

无法通过Shell及Mongoose连接MongoDB,Robo 3T可正常连接

解决Mongoose连接MongoDB认证失败但Robo 3T可正常连接的问题

我之前也碰到过一模一样的情况!Robo 3T能顺利连上,但用Mongoose就报认证失败,大概率是这几个细节没处理好,你可以挨个排查:

  • 明确指定认证数据库
    Robo 3T在连接时会默认使用admin数据库做认证(尤其是root用户),但你的连接字符串里把tbAuth设为了默认数据库,Mongoose会尝试用这个库去做认证,而root用户通常是在admin库下创建的,自然会失败。修改连接字符串,加上authSource参数指定认证库:

    let url = 'mongodb://root:PASSWORD@10.0.1.185:27017/tbAuth?authSource=admin';
    
  • 检查密码的URL编码
    如果你的密码里包含@、:、/这类URL特殊字符,Robo 3T会自动帮你处理编码,但Mongoose直接用原字符串的话会导致连接解析错误。比如密码是Pass@123,要转成Pass%40123再放到连接字符串里。

  • 适配认证机制或升级Mongoose
    若你的MongoDB服务器版本是4.0+,默认用SCRAM-SHA-256认证机制,而旧版Mongoose可能默认使用SCRAM-SHA-1,两者不兼容会导致认证失败。可以在连接选项里指定机制,或者升级Mongoose到最新稳定版:

    mongoose.connect(url, {
      auto_reconnect: true,
      authMechanism: 'SCRAM-SHA-256'
    })
    
  • 确认用户权限配置
    虽然Robo 3T能连接,但还是要确认root用户是否有权限访问tbAuth数据库。在Robo 3T里切换到admin库,执行以下命令检查用户权限:

    use admin;
    db.getUser('root');
    

    确保用户的roles里包含对tbAuth的读写权限,或者拥有root超级角色(默认应该有,但以防配置异常)。

我当时就是因为没加authSource参数导致的问题,加上之后立刻就正常连接了,你可以先试试第一个方案,应该能解决大部分情况!

内容的提问来源于stack exchange,提问作者Silve2611

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:31:29