连接到 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' 按钮
对于未来的访客 - 不要在密码中使用特殊字符。即使您将特殊字符更改为ascii 或 unicode 它不适用于 mLab 使用 mongoose。
也不要使用 mLab 凭据,使用 db 用户凭据。我创建了一个新用户。
例如。对我来说,包含 @ 字符的密码在 URI 中被替换为 ascii 值 %40 ,当使用 native mongodb 驱动程序。
但是在使用猫鼬时,我总是得到 Authentication 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用户名后面的分号后面。
我有一个 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' 按钮
对于未来的访客 - 不要在密码中使用特殊字符。即使您将特殊字符更改为ascii 或 unicode 它不适用于 mLab 使用 mongoose。
也不要使用 mLab 凭据,使用 db 用户凭据。我创建了一个新用户。
例如。对我来说,包含 @ 字符的密码在 URI 中被替换为 ascii 值 %40 ,当使用 native mongodb 驱动程序。 但是在使用猫鼬时,我总是得到 Authentication 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用户名后面的分号后面。