Mongodb Admin не может запустить команду в другой базе данных (код ошибки 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", чтобы соответствовать ролям суперпользователя.

1 ответ

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

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

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