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

时间:2016-03-18 10:49:31

标签: mongodb heroku parse-platform database-migration mlab

我有一个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>。我应该在这里使用其他东西吗?

9 个答案:

答案 0 :(得分:51)

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

heroku config | grep MONGODB_URI

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

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

答案 1 :(得分:11)

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

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

答案 2 :(得分:7)

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

答案 3 :(得分:3)

我很抱歉这看起来很明显,但你必须删除这些字符&lt;&gt; 才能让迁移工作

在您的示例中看起来像这样: mongodb的:// DBUSER:dbpassword@ds047124.mlab.com:47124 / heroku_1ksph3jj

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

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

EG。对我来说,包含 @ 字符的密码已替换为URI中的 ascii %40 ,这在使用原生时有效 mongodb 驱动程序。  但是在使用mongoose时,我总是得到身份验证失败。 我删除了特殊字符,db通过mongoose进行了身份验证。

答案 6 :(得分:2)

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

答案 7 :(得分:1)

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

heroku config:get MONGODB_URI
  

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

答案 8 :(得分:0)

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

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

  

mongodb:// heroku_user:PASSWORDyourLOOKINGfor@ds2238985.mlab.com:63295 / heroku_user

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