2016-01-04 51 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安裝向前更新。