2017-07-12 73 views
8

Instalacja, którą próbuję osiągnąć, polega na tym, aby proces węzła tworzył bazy danych, a inne serwery korzystały z tych baz w bezpieczny sposób.
Więc moim pomysłem było stworzenie bazy danych z węzła z użytkownikiem i przekazać. Następnie otwórz port mongodb serwera, aby otworzyć dostęp i zablokować użytkownika admin mongo. Jeśli ta teoria jest dobra:
Konfiguracja Mongoeb Secure Server z Mongoose

  1. Jak zrobić użytkownika z mangustą, aby baza danych była dostępna tylko dla tego użytkownika?
  2. Czy mogę tylko dodać bind_ip = 0.0.0.0 i to wszystko?

PS: używam Ubuntu 16:04 i najnowszego Mongodb.

Edit: 13/08/17
co mam do tej pory sukces jest addUser = db.createUser({user: "admin",pwd: "admin",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}); dla administratora bazy danych, połączyć się z nim, gdy baza danych jest pod --auth i stara się tworzyć inne bazy danych za pośrednictwem tego połączenia, jak poniżej.

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

Możesz stworzyć użytkownika za pomocą mangusty. to jest tylko użycie sterownika dla łączności i wykonywania tylko operacji CURD mongotb –

+0

Mam zaktualizowaną moją odpowiedź może to rozwiązać problem i pomoże ci z innymi problemami mongodb i ubuntu dla mongodb –

Odpowiedz

0

Generalnie prawie co zrobił Chciałem. Oto rozwiązanie.

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.'); 
      }); 
     }); 
    }); 
}); 

Zazwyczaj tworzę Collection z dokumentu, aby utworzyć bazę danych, a kiedy jestem usunięcie tej kolekcji, bazy danych automatycznie zostaną usunięte, jeśli nie będzie opcja nie usuwać go, że będzie dobra poprawa w roztworze.

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" 

w JS węzłów jak używać mangusty i łączenie z bazą danych MongoDB następująco

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; 

Może moja praca rozwiązać swój problem i wszystkie najlepsze

+0

mongod.conf wygląda na logiczne, będę użyj czegoś takiego. O pliku node.js teraz spójrz poniżej. ' var dbUrl = 'mongodb: // coolone: ​​cooltwo @ localhost: 27017/coolthree'; mongoose.createConnection (dbUrl, { \t useMongoClient: true }); mongoose.Promise = global.Promise; ' ' w zasadzie dodałem, że, ale mam 'MongoError: Authentication failed.} Używam' createConnection', ponieważ mam aplikację połączoną z mongodb z inną bazą danych. –

+0

Proste pytanie, jak połączyć się z użytkownikiem i przekazać do bazy danych, która nie istnieje? –