2016-01-04 50 views
7

我试图连接到一个数据库MongoLab但不断收到上连接了以下错误:验证失败,代码18连接到MongoLab数据库时

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

我使用连接的代码是:

var mongoose = require("mongoose"); 

mongoose.connect("mongodb://username:[email protected]:61474/apitest"); 

mongoose.connection.on('error', function (err) { 
    console.log(err); 
}); 

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

+1

您是否可以检查是否意外地使用了您的mongolab.com用户名和密码,而不是数据库用户名和密码? – Idos

+1

另外,你可能使用一个旧的shell版本连接到mongodb更新的版本? – Idos

回答

8

我用mongoose连接mongo db时遇到了类似的问题。探索了一段时间后,我发现mongoLab正在使用SCRAM-SHA-1身份验证。 请参考下面的问题,我想我的猫鼬升级至V4.1.11,然后它为我工作

Authentication in mongoose using SCRAM-SHA-1

+0

升级猫鼬版本帮助我..感谢:) 请参阅此https://github.com/mongolab/hello-mongoose/commit/d873461a5cae8c914b4385f6259b2d7a83e164e3 – rtvalluri

1

有了这个错误我自己,原来我做了两件事情不正确(感谢IDOS):

  1. 使用了mongolab.com用户名而不是数据库之一。
  2. 尝试使用通过Ubuntu存储库提供的2.6 shell连接到mongo 3.4数据库。 mongo --version检查。

按照this MongoDB page的说明将它们的密钥和存储库添加到您的APT源中,以升级并保持MongoDB安装向前更新。