MongoDB устанавливает пользователя в качестве администратора выбранных баз данных

#mongodb #authentication #roles

#mongodb #аутентификация #роли

Вопрос:

Мне нужно создать пользователя в MongoDB с ролью «root», но только для нескольких выбранных баз данных (database_one и database_two). Мои вопросы:

  1. В какой базе данных я должен создать пользователя?
  2. Нужно ли мне создавать пользовательские роли? С какими настройками?
  3. Какие роли я должен предоставить пользователю?

Мой план состоял в том, что я создаю пользователя в DB admin, устанавливаю роли DBAdmin, UserAdmin, ReadWrite с обеими базами данных (database_one и database_two). Но в этом случае я не могу подключиться как этот пользователь. Можете ли вы помочь мне, как настроить пользователя и его роли?

Ответ №1:

Предполагая, что вы выбрали текущую базу данных (с помощью этой команды use <databaseName> ), с которой вы уже работаете, вы можете попробовать приведенный ниже код, чтобы добавить пользователя и указать его / ее учетные данные и роли.

 db.addUser({user: "root", pwd: "123456", roles: [ "userAdminAnyDatabase", "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin" ]}));
  

ИЛИ создать администратора пользователя для одной базы данных:

 use <databaseName>
db.createUser(
  {
    user: "recordsUserAdmin",
    pwd: "password",
    roles: [ { role: "userAdmin", db: "records" } ]
  }
)
  

Подробнее отсюда

Комментарии:

1. Когда я использую ваш пример # 1, созданный пользователь имеет доступ ко всем базам данных. Но пользователь должен иметь доступ только к 2 указанным базам данных. И когда я использую ваш второй пример, мне приходится дважды создавать одного и того же пользователя в обеих базах данных. Но это решение неэффективно для меня, потому что каждый раз, когда я хочу изменить пароль пользователя, мне приходится менять их в обеих базах данных.