我有数据库 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({...})
似乎很愚蠢。
答案 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。