关于mLab身份验证的MongoDB失败

Brs*_*ev7 9 mongoose mongodb node.js mongodb-query

根据http://docs.mlab.com/#create-sub中的步骤创建了一个新的mLab帐户并创建了一个数据库.尝试使用mongo shell和mongoose Node.js模块连接到数据库,但我在两种情况下都看到"Authentication Failed"错误.

在Mongo shell中,命令是,我已经仔细检查了凭据

mongo ds012345.mlab.com:56789/dbname -u dbuser -p dbpassword
Run Code Online (Sandbox Code Playgroud)

错误:

MongoError: authentication fail
at Function.MongoError.create (E:\Gatsby\notmongoose\node_modules\mongodb-core\lib\error.js:31:11)
Run Code Online (Sandbox Code Playgroud)

使用Mongoose

var mongoose = require('mongoose')
, Admin = mongoose.mongo.Admin;

var uri = '<correct mongo uri here>';

var connection = mongoose.createConnection(uri,
{    
User: '<uname>',
Password: '<pwd>'
});
connection.on('open', function() {

console.log('connection established!!!');

new Admin(connection.db).listDatabases(function(err, result) {
    console.log('listDatabases succeeded');
    console.log(err);
    console.log(result); 
});
Run Code Online (Sandbox Code Playgroud)

});

错误:: MongoConnect错误MongoError:身份验证失败

还有什么需要在mLab控制台或其他任何我可能做错或丢失的事情上完成吗?

Dee*_*kar 18

您需要在mLab帐户中为数据库创建新用户.并在mlab帐户上使用该创建的用户登录.然后单击特定数据库并单击用户选项卡,请参见下图: 用户选项卡并添加新用户

现在填写表单并为数据库创建用户.见下图:

在此输入图像描述

现在,在代码中使用以下字符串进行连接:

var mongoose = require('mongoose');

var mongoDB = "mongodb://<username>:<password>@ds241489.mlab.com:41489/<DB Name>";

mongoose.connect(mongoDB, {
    useMongoClient: true
});

var db = mongoose.connection;

db.on('error', console.error.bind(console, 'MongoDB connection error:'));
Run Code Online (Sandbox Code Playgroud)

  • @ Brstdev7仍然不适合我 (5认同)

Jul*_*uti 8

我遇到同样的问题,在我的情况下,它是客户端版本的兼容性的问题,如解释在这里.

我的mLab mongo数据库版本是3.4.9,但我所拥有的客户端命令行版本来自官方Ubunty Xenial存储库,版本为2.6.10.

即使使用的凭据(数据库凭据,而不是mlab用户凭据)正确,这也会导致"身份验证失败".


Kay*_*eri 6

你可能正在使用mLab凭证dbuserdbpassword.

您应该使用mLab的Web界面为数据库创建新用户,并尝试使用该用户登录.

以下是如何在mLab中为数据库创建用户:

  1. 选择数据库
  2. 切换到用户选项卡
  3. 点击 add database user


小智 5

 var mongoose = require('mongoose');

 var mongoDB = "mongodb://user:123456@ds114989.mlab.com:13936/brary";

 mongoose.connect(mongoDB, {
    useMongoClient: true
 });

 var db = mongoose.connection;

 db.on('error', console.error.bind(console, 'MongoDB connection error:'));
Run Code Online (Sandbox Code Playgroud)

注意:您需要在Mlab上为您的数据库创建一个用户。这不是您在Mlab上的帐户登录详细信息。这是我的替换为userdbpassword替换为123456 如果您的密码包含一个特殊字符(如@),则#您需要使用'dbuser':'dbpassword'对其进行转义。