簡體   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