У меня проблема с общим кластером mongodb: я пытаюсь получить данные через реализацию mongodb на nodejs. Несколько дней назад все работало нормально. Но теперь каждая команда getmore, которую я отправляю в кластер, очень и очень медленная. Поэтому я подумал: может быть, мне просто нужно выключить его и снова включить.
Поэтому я попытался подключиться к кластеру с помощью оболочки mongo. Все работает нормально, у моего пользователя роль atlasAdmin (с видно через db.getUser("admin")
), но когда я пытаюсь выполнить команды типа db.shutdownServer()
или показать пользователей, сервер говорит мне, что я не авторизован. Даже команда «db.auth("admin", ...pw...)
» возвращает 1.
После некоторых исследований я обнаружил, что мне нужно выключить сервер, чтобы решить эту проблему. Но без разрешения, как мне это сделать? Есть ли другая возможность сделать это, например, кнопка в веб-приложении атласа или что-то в этом роде?
Atlas — это размещенная служба, поэтому привилегии отличаются от привилегий сервера MongoDB на «голом железе». Из Права пользователя базы данных MongoDB Это список привилегий atlasAdmin:
shutdown
является частью роли hostManager, которая не вошедших в список выше.В зависимости от вашего типа развертывания Atlas, вот список ограниченных команд/привилегий:
Если вам нужно «включать и выключать» свое развертывание, вы можете использовать Test Failover, если ваш тип развертывания поддерживает это. Эта кнопка отключит основной узел и выберет новый основной, что в большинстве случаев почти эквивалентно «выключить и снова включить».
Спасибо за ваш ответ. Но даже если у меня нет роли hostManager, разве я не могу выполнять такие команды, как show users? Проблема с очень медленным кластером была вызвана MongoDB. Они ограничивают скорость передачи после 10 ГБ, о чем я не знал. — person Fabroanc; 04.02.2020
Это будет зависеть от вашего развертывания. Если вы находитесь в общем развертывании, таком как M0/M2/M5, я не думаю, что вы можете видеть пользователей. Какой тип вы используете? — person Fabroanc; 05.02.2020