Я начал использовать MongoDB с аутентификацией. Согласно документации, я использовал исключение localhost для создания администратора с единственной ролью userAdminAnyDatabase . Это все прошло нормально. Когда я запускаю клиент "mongo" и авторизируюсь на базе данных admin после , используя эту базу данных, я получаю число 1 , указывающее, что авторизация прошла успешно. Однако любая команда, которую я пытаюсь выполнить, приводит к «неавторизованной» ошибке, даже при попытке показать коллекции в базе данных администратора, против которой я только что авторизовался.
Может кто-нибудь сказать мне, почему это и как я могу это исправить? В настоящее время я работаю без аутентификации, пока не смогу это исправить.
Роль userAdminAnyDatabase
(и роль userAdmin
, к которой она относится) просто дает вашему пользователю разрешение на чтение и запись в коллекцию system.users
для управления пользователями базы данных. Это не позволяет пользователю читать или записывать фактические коллекции базы данных. Для этого вам нужно предоставить read
или readWrite
роли.
См. Роли привилегий пользователя в MongoDB и . Добавление пользователя в базу данных .
Попробуйте выполнить следующие шаги для решения проблемы аутентификации:
примеры команд:
mongod --port 27017 --dbpath /data/db1
use educationDb;
db.createUser({ user : 'readonly', pwd: 'readonly', roles : ['read']})
db.xyz.insert({"name":"nix.education"})
mongod --auth --port 27017 --dbpath /data/db1
use educationDb;
db.auth('readonly','readonly')
[ 1122]