Подключение к базе данных MongoDB на mLab не проходит проверку подлинности

у меня есть приложение для анализа, и я пытаюсь перенести базу данных моего приложения в экземпляр MongoDB на mLab.

у меня уже есть вилка сервера разбора, настроенная на Heroku, и я использую надстройку Mlab MongoDB Heroku.

у меня есть база данных по mLab под названием heroku_1ksph3jj, и я должен иметь возможность подключиться к нему со следующим шаблоном:

mongodb://<dbuser>:<dbpassword>@ds047124.mlab.com:47124/heroku_1ksph3jj

однако каждая попытка возвращает:

Server returned error on SASL authentication step: Authentication failed.

Я не уверен, что на замену <dbuser> и <dbpassword> С. У меня есть пользователь базы данных с тем же именем, что и моя база данных:heroku_1ksph3jjz, поэтому я использовал это. И я использовал пароль для этого пользователя вместо <dbpassword>. Я должен использовать что-то еще?

8 ответов


Вы можете получить dbuser и dbpass с:

heroku config | grep MONGODB_URI

возьмите dbuser (example_user) и dbpass (example_pass) из ответа:

MONGOLAB_URI: mongodb://example_user:example_pass@mlab.com:12345/db


по состоянию на март 2016 года, mLab.com поддерживает только mongo 3.0+ (в соответствии с разговором с поддержкой) из-за их новых обременительных требований к аутентификации.

этого не было на сайте, но я надеюсь, что это поможет кому-то здесь!


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


Мне так жаль, что это может показаться очевидным, но вы должны удалить эти символы для миграции на работу

в вашем примере будет выглядеть так: mongodb://dbuser:dbpassword@ds047124.mlab.com:47124/heroku_1ksph3jj


проверьте версию клиента mongo. Если в старые версии (вероятно, 2.x), обновите его до 3.x


для будущих посетителей - Не используйте специальные символы В пароль .Даже если вы измените специальный символ ascii или unicode это не будет работать на mLab используя мангуста.

также не используйте учетные данные mLab, используйте учетные данные пользователя db . Я создал нового пользователя.

например. Для меня пароль, содержащий @ символ был заменен на ascii значение %40 в URI, который работал при использовании уроженца в MongoDB драйвер. Но при использовании мангуста я всегда получал Ошибка . Я удалил специальные символы, и db был аутентифицирован через мангуста.


похоже, что это был неправильный пароль, который, я предполагаю, был настроен надстройкой mLab Heroku. Не было очевидного способа сбросить это в интерфейсе mLab, поэтому в конце концов я создал другого пользователя базы данных (с новым именем пользователя и паролем) и смог подключиться к этому просто отлично.


Я знаю, что опоздал, просто для информации. Для получения информации о учетной записи mLab, которая была создана автоматически, когда mlab addon был добавлен в приложение в вашей учетной записи heroku, попробуйте следующую команду.

heroku config:get MONGODB_URI

Ref: http://algebra.sci.csueastbay.edu/~grewe/CS6320/Mat/NodeJS/Heroku/Heroku_MLabMongoDB.html