Администратор Mongodb не может запустить команду в другой базе данных (код ошибки 13)

У меня есть некоторые проблемы с правами в mongoDB, я создал администратора БД, используя метод аутентификации, и это сработало.

Я могу подключиться с удаленного сервера к моей БД без предупреждения, используя учетную запись администратора, которую я создал с ролью «userAdminAnyDatabase». Но когда я использую другую БД (использую myDB), я не могу запустить db.runCommand.

Вот что я получаю:

> db.runCommand({createIndexes: "C_Cache", indexes: [{key: {tags: 1}, name: "tags_1"}]})
{
    "ok" : 0,
    "errmsg" : "not authorized on myDB to execute command { createIndexes: \"C_Cache\", indexes: [ { key: { tags: 1.0 }, name: \"tags_1\" } ] }",
    "code" : 13
}

Когда я комментирую «auth» в файле конфигурации, все работает отлично. Но это не то, чего я хочу. Мне нужен этот метод аутентификации.


РЕДАКТИРОВАТЬ:

Я просто неправильно понял значение «userAdminAnyDatabase», это не дает вам прав на изменение других БД. Для этого, похоже, нужна роль «root», чтобы соответствовать ролям суперпользователя.


person Vodsky    schedule 14.05.2014    source источник


Ответы (1)


когда экземпляр Mongod открывается с параметром --auth, это означает, что ваша база данных аутентифицирована. Однако соединение с БД устанавливается без какой-либо аутентификации, но вы не можете выполнить какую-либо операцию, так как это выдает ошибку в вашем описании, поскольку вы не авторизованы. Теперь переключитесь на аутентифицированную базу данных, а затем выполните аутентификацию, используя

db.auth(имя пользователя, пароль) Теперь вам может быть разрешено выполнять авторизованные операции с базой данных.

person TharunRaja    schedule 10.09.2015