Auth失败,连接到MongoLab数据库时代码为18



我正试图连接到MongoLab数据库,但在连接时一直收到以下错误:

{ [MongoError: auth failed] name: 'MongoError', ok: 0, errmsg: 'auth failed', code: 18 }

我用来连接的代码是:

var mongoose = require("mongoose");
mongoose.connect("mongodb://username:password@ds061474.mongolab.com:61474/apitest");
mongoose.connection.on('error', function (err) {
    console.log(err);
});

当我使用shell连接时,我没有任何问题。我做错了什么?

我在使用mongoose连接mongo-db时也遇到过类似的问题。经过一段时间的探索,我发现mongoLab正在使用SCRAM-SHA-1身份验证。参考下面的问题,我试图将我的猫鼬升级到V4.1.11,然后它对我有效

使用SCRAM-SHA-1 在猫鼬中进行身份验证

我在尝试将数据从区域设置导入服务器时遇到了同样的问题。

这两个参数可能很重要,在我把它们放进去之后它就起作用了:

--authenticationMechanism 'MONGODB-CR' 
--authenticationDatabase "admin"

小心身份验证机制,可能是不同的机制。检查文档的这一部分:https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport身份验证机制

我自己也犯了这个错误,结果我做错了两件事(谢谢Idos):

  1. 使用mongolab.com用户名而不是数据库用户名
  2. 尝试使用Ubuntu存储库提供的2.6 shell连接mongo3.4数据库。mongo --version进行检查

按照此MongoDB页面中的说明将其密钥和存储库添加到APT源中,以便升级并保持MongoDB安装的更新。

在这种情况下我也有类似的错误。将authSourse=adminssl=true放入您的连接

例如

mongodb://username:password@ds061474.mongolab.com:61474/apitest?authSourse=admin&ssl=true

最新更新