MongoDB Atlas: пользователю не разрешено выполнять поиск действий на system.indexes

Yuriy Yunikov спросил: 28 марта 2018 в 04:13 в: mongodb

Я использую MongoDB Atlas, и я недавно начал получать эту ошибку на моей реплике MongoDB:

пользователю не разрешено выполнять действие [find] на [mydb.system. индексы]

Ничего не изменилось, поэтому мне интересно, что может быть проблемой. Пользователь имеет readWrite роль в mydb, а из документов он выглядит так, как будто он имеет право на это. Кроме того, я попытался изменить пользователя на пользователя admin, который имеет какие-либо права, но все же получил эту ошибку. Интересно, что коллекция system не существует в mydb, но Spring Data пытается запросить его и получит эту ошибку.

Вот полный журнал из mongo:

Error: error: {
    "ok" : 0,
    "errmsg" : "user is not allowed to do action [find] on [mydb.system.indexes]",
    "code" : 8000,
    "codeName" : "AtlasError"
}

URI MongoDB-подключения выглядит следующим образом:

spring.data.mongodb.uri=mongodb+srv://[USER]:[PASSWORD]@[MONGO_URL].mongodb.net/mydb

Я использую Spring Boot 2.0.1.RELEASE с mongo java драйвер версии 3.6.3. Версия реплики Mongo - 3.4.14. Любая идея, что происходит и как это можно исправить? Обновление роли пользователя здесь не помогает.


1 ответ

Есть решение
Yuriy Yunikov ответил: 30 марта 2018 в 07:27

MongoDB Atlas запрещает прямые вызовы для некоторых коллекций system. и указывает, что вместо них следует использовать документ и db.<COLLECTION>.getIndexes(). В моем случае библиотека MongoBee выполняла вызов system.indexes и вызывала проблему. Подробнее см. Мой ответ здесь .

Stennie ответил: 31 марта 2018 в 10:07
В частности, команда listIndexes должна использоваться в MongoDB 3.0+ (это та же команда, которая вызывается помощником оболочки db.collection.getIndexes). Прямой доступ к коллекции system.indexes является переносом устаревшей реализации MMAPv1: введение API механизма хранения в MongoDB 3.0 добавило поддерживаемый командный интерфейс.
Yuriy Yunikov ответил: 10 апреля 2018 в 04:53
Отправил запрос на извлечение в библиотеку MongoBee с исправлением github.com/mongobee/mongobee/pull/87