MongoDB super-admin аутентифицируется нормально, но все равно получает неавторизованные ошибки запроса?

Я начал использовать MongoDB с аутентификацией. Согласно документации, я использовал исключение localhost для создания администратора с единственной ролью userAdminAnyDatabase . Это все прошло нормально. Когда я запускаю клиент "mongo" и авторизируюсь на базе данных admin после , используя эту базу данных, я получаю число 1 , указывающее, что авторизация прошла успешно. Однако любая команда, которую я пытаюсь выполнить, приводит к «неавторизованной» ошибке, даже при попытке показать коллекции в базе данных администратора, против которой я только что авторизовался.

Может кто-нибудь сказать мне, почему это и как я могу это исправить? В настоящее время я работаю без аутентификации, пока не смогу это исправить.

4
задан 25 August 2013 в 05:01

2 ответа

Роль userAdminAnyDatabase (и роль userAdmin, к которой она относится) просто дает вашему пользователю разрешение на чтение и запись в коллекцию system.users для управления пользователями базы данных. Это не позволяет пользователю читать или записывать фактические коллекции базы данных. Для этого вам нужно предоставить read или readWrite роли.

См. Роли привилегий пользователя в MongoDB и . Добавление пользователя в базу данных .

0
ответ дан 25 August 2013 в 05:01

Попробуйте выполнить следующие шаги для решения проблемы аутентификации:

  1. запустите mongod без аутентификации и запустите:
  2. создайте базу данных
  3. создайте пользователя с ролью [ 119]
  4. создать фиктивную коллекцию с одним документом
  5. stop / kill mongod
  6. start mongod с включенной аутентификацией
  7. перейти на базу данных, созданную на шаге 1
  8. [ 1114] аутентификация в базе данных с пользователем, созданным на шаге 3

примеры команд:

  1. mongod --port 27017 --dbpath /data/db1
  2. use educationDb;
  3. db.createUser({ user : 'readonly', pwd: 'readonly', roles : ['read']})
  4. db.xyz.insert({"name":"nix.education"})
  5. стоп / убить монгод
  6. mongod --auth --port 27017 --dbpath /data/db1
  7. use educationDb;
  8. db.auth('readonly','readonly') [ 1122]
0
ответ дан 25 August 2013 в 05:01

Другие вопросы по тегам:

Похожие вопросы: