MongoDB - не авторизован в общем кластере, несмотря на роль atlasAdmin - PullRequest
2 голосов
/ 03 февраля 2020

У меня проблема с общим кластером mongodb: я пытаюсь получить данные с помощью реализации nodejs mongodb. Несколько дней go все работало нормально. Но теперь каждая команда getmore, которую я посылаю в кластер, очень и очень медленная. Поэтому я подумал: может быть, мне просто нужно выключить и снова включить.

Поэтому я попытался подключиться к кластеру с помощью оболочки mon go. Все работает нормально, у моего пользователя есть роль atlasAdmin (его можно увидеть через db.getUser("admin")), но когда я пытаюсь выполнить команды типа db.shutdownServer() или показать пользователей, сервер сообщает, что я не авторизован. Даже команда "db.auth("admin", ...pw...)" возвращает 1.

После некоторых исследований я обнаружил, что должен выключить сервер, чтобы иметь возможность исправить эту проблему. Но без разрешения, как мне это сделать? Есть ли какая-либо другая возможность сделать это, например, кнопка в веб-приложении atlas или что-то еще?

1 Ответ

1 голос
/ 04 февраля 2020

Atlas является размещенной службой, поэтому привилегии отличаются от обычного сервера MongoDB. Из Права пользователя базы данных MongoDB Это список привилегий atlasAdmin:

  • readWriteAnyDatabase
  • readAnyDatabase
  • dbAdminAnyDatabase
  • clusterMonitor
  • cleanupOrphaned
  • enableSharding
  • flushRouterConfig
  • moveChunk
  • splitChunk
  • viewUser

shutdown привилегия является частью роли hostManager , которая не включена в приведенный выше список.

В зависимости от типа развертывания Atlas, здесь приведен список запрещенных команд / привилегии:

Если вам нужно «включить и выключить» развертывание, вы можете использовать кнопку Test Failover , если это поддерживает тип развертывания. Эта кнопка понижает первичный узел и выбирает новый первичный, который в большинстве случаев почти эквивалентен «выключить и снова включить».

...