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 (имя пользователя, пароль) Теперь вы можете авторизоваться для выполнения авторизованных операций на БД.