2017-07-12 19 views
8

Thiết lập tôi đang cố gắng để thành công là có một quy trình nút tạo cơ sở dữ liệu và các máy chủ khác truy cập cơ sở dữ liệu đó một cách an toàn.
Vì vậy, ý tưởng của tôi là tạo cơ sở dữ liệu từ nút với người dùng và vượt qua. Sau đó, mở cổng máy chủ mongodb để mở truy cập và khóa người dùng quản trị mongo. Nếu lý thuyết đó là tốt:
Thiết lập máy chủ bảo mật Mongodb với Mongoose

  1. Làm thế nào để người dùng có mongoose để cơ sở dữ liệu chỉ có thể truy cập với người dùng đó?
  2. Trên /etc/mongodb.conf tôi chỉ nên thêm bind_ip = 0.0.0.0 và đó là tất cả?

PS: tôi đang sử dụng Ubuntu 16:04 và mới nhất là Mongodb.

Edit: 13/08/17
gì tôi có thành công đến nay là để addUser = db.createUser({user: "admin",pwd: "admin",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}); cho cơ sở dữ liệu quản trị, kết nối với nó trong khi cơ sở dữ liệu đang được --auth và cố gắng để tạo ra cơ sở dữ liệu khác thông qua kết nối đó, như dưới đây.

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

Bạn có thể tạo người dùng bằng cách sử dụng mongoose. nó chỉ là một trình điều khiển sử dụng cho kết nối và thực hiện các hoạt động CURD của mongodb –

+0

Tôi đã cập nhật câu trả lời của tôi có thể nó đã giải quyết vấn đề của bạn và sẽ giúp u với mongodb và ubuntu vấn đề cho mongodb –

Trả lời

0

Nói chung tôi gần như đã làm những gì tôi muốn. Đây là giải pháp.

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

Nói chung tôi đang tạo Bộ sưu tập với tài liệu để tạo ra cơ sở dữ liệu, và khi tôi đang loại bỏ mà Bộ sưu tập, cơ sở dữ liệu tự động được xóa, nếu sẽ có tùy chọn để không xóa nó, mà sẽ được cải thiện tốt cho các giải pháp.

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" 

Trong js nút làm thế nào để sử dụng cầy mangut và kết nối với cơ sở dữ liệu MongoDB của bạn như sau

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; 

Có thể công việc của tôi giải quyết vấn đề của bạn và tất cả các tốt nhất

+0

mongod.conf có vẻ hợp lý, tôi sẽ sử dụng một cái gì đó như thế. Về node.js bây giờ, nhìn dưới đây. ' var dbUrl = 'mongodb: // coolone: ​​cooltwo @ localhost: 27017/coolthree'; mongoose.createConnection (dbUrl, { \t useMongoClient: true }); mongoose.Promise = global.Promise; ' về cơ bản tôi đã thêm điều đó, nhưng tôi đã nhận' MongoError: Xác thực không thành công'. Tôi đang sử dụng 'createConnection' vì tôi có ứng dụng được kết nối với mongodb với cơ sở dữ liệu khác. –

+0

Câu hỏi đơn giản, làm thế nào chúng ta có thể kết nối với người dùng và chuyển đến cơ sở dữ liệu không tồn tại? –

Các vấn đề liên quan