Вопрос MongoDB super-admin проверяет подлинность, но все еще получает ошибки неавторизованного запроса?


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

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


4
2017-08-25 01:01


происхождения




ответы:


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

Видеть Роли привилегии пользователя в MongoDB а также Добавление пользователя в базу данных,


4
2017-09-03 09:21





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

  1. start mongod без аутентификации включен и запущен:
  2. создать базу данных
  3. создать пользователя с ролью
  4. создать фиктивную коллекцию с одним документом
  5. остановить / убить монгод
  6. запустить mongod с включенной аутентификацией
  7. переключиться на базу данных, созданную на шаге 1
  8. аутентифицировать в базе данных пользователя, созданного на шаге 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')

0
2017-07-07 08:25