我有一个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>
。我应该在这里使用其他东西吗?
答案 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用户名后的分号后。