Как выполнять команды управления пользователями в Mon goose (db.createUser, db.dropUser)? - PullRequest
0 голосов
/ 22 марта 2020

Мне нужно управлять пользователями mongoDB, используя Mon goose. В частности, мне нужно подготовить пользователей базы данных с помощью скрипта nodeJS и, следовательно, создать пользователей mongoDB.

В оболочке MongoDB я использовал следующее:

> db.createUser(
...     {
...         user: "productUser",
...         pwd: "password123",
...         roles: [
...             {"db":"admin", "role":"dbAdminAnyDatabase" }, 
...             {"db":"admin", "role":"readWriteAnyDatabase"}, 
...             {"db":"admin", "role":"clusterAdmin"}
...         ]
...     }
... )

Что эквивалентно в Mon goose?

1 Ответ

0 голосов
/ 22 марта 2020

В оболочке MongoDB db.getCreateUser и db.DropUser используйте под капотом команды mongoDB, которые запускаются через db.runCommand({createUser: "user1", ....}) и db.runCommand({dropUser: "user1"}).

Из этого вопроса мы можем используйте команды mongoDB для выполнения всех типов команд управления пользователями (создание, удаление, обновление, предоставление ролей ...)

Следующий код добавляет пользователя, показывает созданного пользователя и удаление этот пользователь впоследствии:

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/admin', {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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...