繁体   English   中英

MongoError:未经授权((数据库名称)执行命令

[英]MongoError: not authorized on (DB name) to execute command

我正在使用Node.Js,Expressjs,mLab(托管我的数据库)和mongoDB

我收到未在Streetinform(我的数据库名称)上被授权执行命令的错误。 {listIndexes:“会话”,光标:{}}

这是错误。

在此处输入图片说明

这就是我连接到数据库的方式

var dbHost = process.env.DB_HOST || 'localhost';
var dbPort = process.env.DB_PORT ||  3002;
var dbName = process.env.DB_NAME || 'Mongodb';

var dbURL = 'mongodb://'+dbHost+':'+dbPort+'/'+dbName;

if (app.get('env') == 'development'){
// prepend url with authentication credentials // 
    dbURL = 'mongodb://'+process.env.DB_USER+':'+process.env.DB_PASS+'@'+dbHost+':'+dbPort+'/'+dbName;
}

app.use(session({
    secret: 'secret',
    proxy: true,
    resave: true,
    saveUninitialized: true,
    store: new MongoStore({ url: dbURL })
    })
);

这是我的图书馆

var http = require('http');
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var errorHandler = require('errorhandler');
var cookieParser = require('cookie-parser');
var MongoStore = require('connect-mongo')(session);
var dotenv = require('dotenv')
dotenv.load();
var app = express();

建立与数据库的连接

var crypto      = require('crypto');
var MongoDB     = require('mongodb').Db;
var Server      = require('mongodb').Server;
var moment      = require('moment');

/*
    ESTABLISH DATABASE CONNECTION
*/

var dbName = process.env.DB_NAME || 'mongodb';
var dbHost = process.env.DB_HOST || 'localhost'
var dbPort = process.env.DB_PORT || 3002;

var db = new MongoDB(dbName, new Server(dbHost, dbPort, {autoReconnect: true}), {w: 1});
db.open(function(err, d){
    if (err) {
        console.log(err);
    } else {
        if (process.env.NODE_ENV == 'live') {
            db.authenticate(process.env.DB_USER, process.env.DB_PASS, function(e, res) {
                if (e) {
                    console.log('mongo :: error: not authenticated', e);
                }
                else {
                    console.log('mongo :: authenticated and connected to database :: "'+dbName+'"');
                }
            });
        }   else{
            console.log('mongo :: connected to database :: "'+dbName+'"');
        }
    }
});

我使用mLabs来执行,看来您尚未创建数据库用途,因为它无法执行任何命令。

您可以使用以下步骤启用它:

  1. 前往https://mlab.com/home
  2. 在“开发和实用程序”中单击要使用的数据库
  3. 单击用户选项卡
  4. 单击添加数据库用户按钮
  5. 输入您想要的凭证

因此,现在当您进行身份验证时,请传递您在第5步中输入的用户名和密码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM