Назад | Перейти на главную страницу

Настройка MongoDB для аутентификации с несколькими базами данных

У меня есть MongoDB с обычной настройкой аутентификации, поэтому вам нужно имя пользователя и пароль для подключения к базе данных (auth=true в конфигах). Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть несколько сценариев, которым необходимо подключиться к этой базе данных, а затем создать новую, скопировать некоторые данные и позже удалить базу данных в какой-то момент времени. Проблема в том, что пользователь первичной базы данных, похоже, не может создать новую.

Я покопался в их документации, но пока ничего не нашел. Я бы сравнил то, что я ищу, с предоставлением пользователю MySQL возможности create database и drop database.

Похоже, понадобится несколько разные прив.

  • clusterAdmin: dropDatabase, что позволяет удалить любую базу данных.
  • Любые роли базы данных: readWriteAnyDatabase, которая позволяет читать и писать из любой базы данных; требуется для работы с динамически создаваемыми базами данных.

Я не понял, что вам нужно для создания базы данных, но это право может унаследоваться напрямую от readWriteAnyDatabase.

У вас должен быть один "root" пользователь (как в MySQL) и использовать его для управления / операционных задач:

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

Этот пользователь сможет делать что угодно:

  • создавать / изменять пользователей
  • создать / удалить DBS
  • дамп / восстановление

Обратите внимание, что вам также следует добавить:

setParameter = enableLocalhostAuthBypass=0

чтобы локальные пользователи не были "root" при подключении с localhost.

Обычные пользователи (не администраторы) должны иметь не более следующих привилегий:

"read", "readWrite", "dbAdmin"

Более подробную информацию можно найти здесь: http://docs.mongodb.org/manual/reference/user-privileges/

Изменить: clusterAdmin предназначен для создания БД ...