2017-07-12 17 views
8

सेटअप जो मैं सफलता की कोशिश कर रहा हूं वह एक नोड प्रक्रिया है जो डेटाबेस बनाता है, और अन्य सर्वर उन डेटाबेस को सुरक्षित तरीके से एक्सेस करते हैं।
तो मेरा विचार डेटाबेस के साथ नोड से डेटाबेस बनाना और पास करना था। फिर सर्वर खोलने के लिए सर्वर mongodb पोर्ट खोलें और mongo व्यवस्थापक उपयोगकर्ता को लॉक करें। यदि वह सिद्धांत अच्छा है:
मोंगोब सिक्योर सर्वर सेटअप मोंगोस

  1. उपयोगकर्ता को mongoose के साथ कैसे बनाया जाए ताकि डेटाबेस केवल उस उपयोगकर्ता के साथ पहुंच योग्य हो सके?
  2. /etc/mongodb.conf पर मुझे केवल bind_ip = 0.0.0.0 जोड़ना चाहिए और यह सब कुछ है?

पीएस: मैं उबंटू 16:04 और नवीनतम मोंगोब का उपयोग कर रहा हूं।

संपादित करें: 13/08/17
क्या मैं अब तक सफलता व्यवस्थापक डेटाबेस के लिए addUser = db.createUser({user: "admin",pwd: "admin",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}); के लिए है, इसके साथ कनेक्ट डेटाबेस --auth के तहत और नीचे की तरह है कि कनेक्शन के माध्यम से अन्य डेटाबेस बनाने के लिए कोशिश कर रहा है, जबकि।

var adminConnection = mongoose.createConnection('mongodb://admin:[email protected]:27017/admin', { 
    useMongoClient: true 
}); 
console.log(typeof adminConnection.db.executeDbAdminCommand);//function 
+0

आप उपयोगकर्ता को मोंगोज़ का उपयोग कर बना सकते हैं। यह सिर्फ कनेक्टिविटी के लिए एक चालक उपयोग है और मोंगोड –

+0

के केवल सीयूआरडी संचालन कर रहा है मैंने अपना जवाब अपडेट किया है, यह आपके मुद्दे को हल कर सकता है और आपको अन्य मोंगोडब और उबंटू मुद्दे के साथ आपकी मदद करेगा mongodb –

उत्तर

0

आम तौर पर मैं लगभग क्या किया समाधान हो सकता है कि कैसे नेवला और अपने MongoDB डेटाबेस से कनेक्ट का उपयोग करने के मैं चाहता था। यहां समाधान है।

var a_conn = mongoose.createConnection('mongodb://admin:[email protected]:27017/admin', { 
    useMongoClient: true 
}); 
a_conn.once('open', function() { 
    a_conn.useDb('w_one'); 
    a_conn.otherDbs[0].db.addUser('user', 'pass', { 
     db: 'w_one', 
     roles: ["readWrite"] 
    }); 
    var Schema = mongoose.Schema({}); 
    var Collection = a_conn.otherDbs[0].model('cool', Schema, 'cool'); 
    var doc = new Collection({}); 
    doc.save(function() { 
     doc.remove(function() { 
      var testConn = mongoose.createConnection('mongodb://user:[email protected]:27017/w_one', { 
       useMongoClient: true 
      }); 
      testConn.once('open', function() { 
       //Collection.collection.drop('cool'); 
       console.log('Database is ready.'); 
      }); 
     }); 
    }); 
}); 

आम तौर पर मैं डेटाबेस बनाने के लिए दस्तावेज़ के साथ संग्रह बनाने रहा हूँ, और जब मैं कर रहा हूँ कि दूर करने संग्रह, डेटाबेस स्वचालित रूप से हटा दिया जाता है अगर उस समाधान के लिए अच्छा सुधार हो जाएगा इसे हटा नहीं करने का विकल्प, हो जाएगा।

2
Your /etc/mongod.conf YAML file will be look like this 

storage: 
    dbPath: /var/lib/mongodb 
    journal: 
    enabled: true 

# where to write logging data. 
systemLog: 
    destination: file 
    logAppend: true 
    path: /var/log/mongodb/mongod.log 


# network interfaces put your ip in bindIp in form of Array like below 
net: 
    port: 27017 
    bindIp: [127.0.0.1,84.20.57.18] 

#before enabling security authorization you must add mongodb database user 
security: 
    authorization: "enabled" 

#Replication oplogsize mb set based on Main Memory of your Ubuntu Server (It will be good to set 1024 for speed of database Operation). In replSetName give your Replica set name or your Project Name Ex: smartcity 
replication: 
    oplogSizeMB: 1024 
    replSetName: "smartcity" 

नोड js के रूप में इस प्रकार है

var mongoose = require('mongoose'); 
var options = { 
    useMongoClient:true 
}; 
var dbUrl = 'mongodb://<dbusername>:<dbpassword>@<db-ipaddress>:27017/<dbname>?replicaSet=<replicasetname>';//Ex:"mongodb://smartcityUser:[email protected]:27017/smartcity?replicaSet=smartcity" 

mongoose.connect(dbUrl,options); 
mongoose.Promise = global.Promise; 

मेरे काम आपकी समस्या और सभी बेहतरीन

+0

mongod.conf तार्किक लग रहा है, मैं ऐसा कुछ इस्तेमाल करें। अब node.js के बारे में, देखो। ' var dbUrl = 'mongodb: // coolone: ​​cooltwo @ localhost: 27017/coolthree'; mongoose.createConnection (dbUrl, { \t उपयोगमोन्ग क्लाइंट: सत्य }); mongoose.Promise = वैश्विक। समझौता; ' मूल रूप से मैंने इसे जोड़ा, लेकिन मुझे 'MongoError: प्रमाणीकरण विफल हुआ।' मैं' createConnection' का उपयोग कर रहा हूं क्योंकि मेरे पास विभिन्न डेटाबेस के साथ मोंगोडब से जुड़ा ऐप है। –

+0

सरल सवाल, हम उपयोगकर्ता के साथ कैसे जुड़ सकते हैं और डेटाबेस में कैसे जा सकते हैं जो मौजूद नहीं है? –