连接到 mLab 上的 MongoDB 数据库验证失败

Connecting to MongoDB database on mLab fails authentication

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

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

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

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

然而,每次尝试 returns:

Server returned error on SASL authentication step: Authentication failed.

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

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

您可以通过以下方式获取 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 年 3 月,mLab.com 仅支持 mongo 3.0+(根据与支持人员的对话),因为它们新的繁琐的身份验证要求。

这不是在网站上,但我希望它能帮助这里的人!

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

在你的例子中应该是这样的: mongodb://dbuser:dbpassword@ds047124.mlab.com:47124/heroku_1ksph3jj

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

有一条为特定数据库创建用户的消息: 需要数据库用户才能连接到该数据库。要立即创建一个,请访问 'Users' 选项卡并单击 'Add database user' 按钮

对于未来的访客 - 不要在密码中使用特殊字符。即使您将特殊字符更改为asciiunicode 它不适用于 mLab 使用 mongoose

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

例如。对我来说,包含 @ 字符的密码在 URI 中被替换为 ascii%40 ,当使用 native mongodb 驱动程序。 但是在使用猫鼬时,我总是得到 A​​uthentication Failed 。 我删除了特殊字符,数据库通过猫鼬进行了身份验证。

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

heroku config:get MONGODB_URI

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

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

在名称字段下有一个大按钮 "Reveal Config Vars"。单击它,您将看到一个 MONGODB_URI var,其中包含指向您的数据库的 uri。它看起来像这样:

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

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