Mongo 2.6中的Mongoose authenticationDatabase

时间:2014-06-25 19:23:55

标签: node.js mongodb mongoose

我有数据库 A B C ,以及系统的 admin

我想添加一个 readWrite 访问 A B C 的用户。

// attempt 1
use admin
db.createUser({ user: "Bob", pwd: "1234", roles: [
    { role: "readWriteAnyDatabase", db: "admin" }
] })

// attempt 2
use admin
db.createUser({ user: "Bob", pwd: "1234", roles: [
    { role: "readWrite", db: "A" },
    { role: "readWrite", db: "B" },
    { role: "readWrite", db: "C" }
] })

对于这些尝试,用户存储在db admin 中。那么我如何使用 admin 进行身份验证,但是在 A B C

var uri = 'mongodb://localhost/A';
var opts = {
    user: 'Bob',
    pass: '1234',
    auth: { authDb: 'admin' }
};
mongoose.connect(uri, opts); // auth fails

我唯一的解决方案是在 A B C 中分别添加用户?实施例

use A
db.createUser({...})
use B
db.createUser({...})
use C
db.createUser({...})

似乎很愚蠢。

2 个答案:

答案 0 :(得分:2)

最简单的方法是在uri中指定authSource

const uri = 'mongodb://monguser:mongpass@192.168.2.2:27017/ps?authSource=admin';

答案 1 :(得分:0)

似乎每个数据库必须使用一个Mongoose连接。 看看Mongoose and multiple database in single node.js project