我需要使用Mongoose管理mongoDB用户。更具体地说,我需要使用nodeJS脚本配置数据库用户,因此需要创建mongoDB用户。
在MongoDB shell中,我正在使用以下内容:
> db.createUser(
... {
... user: "productUser",
... pwd: "password123",
... roles: [
... {"db":"admin", "role":"dbAdminAnyDatabase" },
... {"db":"admin", "role":"readWriteAnyDatabase"},
... {"db":"admin", "role":"clusterAdmin"}
... ]
... }
... )
猫鼬的等效物是什么?
[在MongoDB shell db.getCreateUser
和db.DropUser
中,在后台使用通过db.runCommand({createUser: "user1", ....})
和db.runCommand({dropUser: "user1"})
运行的mongoDB命令。
从this question,我们可以使用mongoDB命令执行所有类型的user management commands(创建,删除,更新,授予角色...)
以下代码添加一个用户,显示创建的用户,然后删除该用户:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});
var db = mongoose.connection;
db.once('open', async function callback () {
//show users
var users = await db.db.command({usersInfo: 1});
console.log("users", users);
//create user
var userCreate = await db.db.command({
createUser: "productUser",
pwd: "1234567",
roles: [
{"db":"admin", "role":"dbAdminAnyDatabase" },
{"db":"admin", "role":"readWriteAnyDatabase"},
{"db":"admin", "role":"clusterAdmin"}
]
});
console.log(userCreate.ok === 1 ? "user created" : "user creation failed");
users = await db.db.command({usersInfo: 1});
console.log("users",users);
//drop user
var userDrop = await db.db.command({
dropUser: "productUser"
});
console.log(userDrop.ok === 1 ? "user removed" : "user drop failed");
users = await db.db.command({usersInfo: 1});
console.log("users",users);
});