【问题标题】:MongoError: not authorized on (DB name) to execute commandMongoError:未授权(数据库名称)执行命令
【发布时间】:2017-03-02 18:21:06
【问题描述】:

我正在使用 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+'"');
        }
    }
});

【问题讨论】:

  • 一个明显的问题:你能用命令行工具和这些凭据连接到数据库吗?
  • @Gianluca 是的。我还更新了错误的图像。并添加建立数据库连接的代码
  • 你找到解决方案了吗?

标签: node.js mongodb session express connect-mongo


【解决方案1】:

我要使用 mLabs,看来您还没有创建数据库使用,因此它无法执行任何命令。

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

  1. 转到https://mlab.com/home
  2. 从开发和实用程序中单击您正在使用的数据库
  3. 单击“用户”选项卡
  4. 单击添加数据库用户按钮
  5. 输入所需的凭据

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

【讨论】:

    猜你喜欢
    • 2019-07-25
    • 2020-02-02
    • 2017-05-31
    • 1970-01-01
    • 2018-02-06
    • 2019-05-30
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多