在mLab上连接到MongoDB数据库失败了身份验证

问题描述 投票:22回答:9

我有一个Parse应用程序,我正在尝试将我的应用程序的数据库迁移到mLab上的MongoDB实例。

我已经在Heroku上设置了一个Parse Server分支,我正在使用Heroku的mLab MongoDB附加组件。

我有一个名为heroku_1ksph3jj的mLab数据库,我应该可以使用以下模板连接到它:

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

但是,每次尝试都会返回:

Server returned error on SASL authentication step: Authentication failed.

我不确定用什么来取代<dbuser><dbpassword>。我有一个与我的数据库名称相同的数据库用户:heroku_1ksph3jjz,所以我使用了它。我使用该用户的密码代替<dbpassword>。我应该在这里使用其他东西吗?

mongodb heroku parse-platform database-migration mlab
9个回答
53
投票

您可以使用以下命令获取dbuser和dbpass:

heroku config | grep MONGODB_URI

从响应中获取dbuser(example_user)和dbpass(example_pass):

MONGOLAB_URI: mongodb://example_user:[email protected]:12345/db


11
投票

截至2016年3月,mLab.com仅支持mongo 3.0+(根据支持对话),因为他们新的繁重的身份验证要求。

这不是在网站上,但我希望它可以帮到这里的人!


7
投票

有一条消息要为特定数据库创建用户:需要数据库用户才能连接到此数据库。要立即创建一个,请访问“用户”选项卡,然后单击“添加数据库用户”按钮


3
投票

我很抱歉这看起来很明显,但是你必须删除这些字符<>才能使迁移工作

在您的示例中,如下所示:mongodb:// dbuser:[email protected]:47124/heroku_1ksph3jj


3
投票

检查您的mongo客户端版本。如果它是较旧的主要版本(可能是2.x),请将其更新为3.x.


3
投票

对于未来的访问者 - 请勿在密码中使用特殊字符。即使您将特殊字符更改为ascii或unicode,它也不会使用mongoose对mLab起作用。

也不要使用mLab凭证,使用db用户凭据。我创建了一个新用户。

例如。对于我来说,包含@字符的密码在URI中被替换为ascii值%40,这在使用本机mongodb驱动程序时起作用。但是在使用mongoose时,我总是得到身份验证失败。我删除了特殊字符,db通过mongoose进行了身份验证。


2
投票

它看起来像是不正确的密码,我假设是由Heroku的mLab附加组件设置的。没有明显的方法可以在mLab UI中重置它,所以最后我创建了另一个数据库用户(使用新的用户名和密码),并且能够正常连接。


1
投票

我知道为时已晚,仅供参考。要获取在您的heroku帐户中将mLab插件添加到应用程序时自动创建的mLab帐户的信息,请尝试以下命令。

heroku config:get MONGODB_URI

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


0
投票

只需转到您的Heroku dashboard并检查您的设置。

在名称字段下面有一个大按钮“Reveal Config Vars”。单击它,您将看到一个带有uri的MONGODB_URI var到您的数据库。它看起来像这样:

MongoDB的:// heroku_user:[email protected]:63295 / heroku_user

您的密码就在heroku用户名后面的分号后面。

© www.soinside.com 2019 - 2024. All rights reserved.