无法连接到mongolab,正在获取MongoError:auth失败

我最近在mongoLab中创build了一个帐户。当我尝试使用下面的语句连接到数据库。

var mongoose = require('mongoose'); mongoose.connect('mongodb://mk:12345@ds047742.mongolab.com:47742/mkdb'); 

我总是得到以下错误

 MongoError: auth failed at Function.MongoError.create (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11) at /Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:793:66 at Callbacks.emit (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:94:3) at null.messageHandler (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:235:23) at Socket.<anonymous> (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:259:22) at Socket.emit (events.js:107:17) at readableAddChunk (_stream_readable.js:163:16) at Socket.Readable.push (_stream_readable.js:126:10) at TCP.onread (net.js:538:20) 

Mongolab将他们的2.6.x数据库升级到3.0.x. 不幸的是,mongo3有不同的authentication机制,所以旧的客户端不兼容。

mongoose使用本地mongo驱动程序,所以你必须升级它。 这通常通过升级当地的mongo安装来完成。

对于那些使用mongojs的用户,升级到最新版本并在连接时在选项对象中添加authMechanism:'ScramSHA1'参数:

 db = mongojs('mongodb://username:password@ds31341.mongolab.com:32132/mydb', ["mycollection"], {authMechanism: 'ScramSHA1'}); 

确保您使用的是数据库usernamepassword而不是Mlab的帐户usernamepassword

在以前的MongoLab MLAB中,做以下操作

  1. 导航到Users
  2. Add Database User
  3. select你的用户名和密码

现在你可以用mongo ds061374.mlab.com:61374/yourdb -u <dbuser> -p <dbpassword>在shell上testing这个mongo ds061374.mlab.com:61374/yourdb -u <dbuser> -p <dbpassword>

对我来说,解决scheme是:

 $ npm install --save --save-exact mongoose@4.1.9 

根据: Heroku的应用程序崩溃后,MongoDB更新到3.0

1-确保数据库已启动并正在运行。 2-不要忘记创build数据库用户有访问凭据。

希望这会帮助你!