如何在 Heroku 上为我的 mlab 配置数据库更改 MONGODB_URI?

How can I change my MONGODB_URI for my mlab provisioned DB on Heroku?

说我不小心泄露了秘密并为 mLab 在 Heroku 上提供的数据库创建了 MONGODB_URI public -- 有没有办法 reset/regenerate/change 我的连接字符串?

例如,我的连接字符串如下所示: mongodb://heroku_g20xzxs8:vc8k708rh1qqgr17luq7satqct@ds045622.mlab.com:41222/heroku_g20xzxs8

这里的关键是了解连接字符串是由什么组成的。在我使用单节点计划的情况下,我的连接字符串默认为这种格式

mongodb://dbuser:dbpass@host:port/dbname

其中包含一些为数据库生成的用户和密码。如果您通过 Heroku 应用程序的仪表板进入您的 mLab 管理门户或使用 Heroku CLI 打开它:

heroku addons:open mongolab

您可以进入“用户”选项卡并创建一个新用户。使用新的用户名和密码,您可以update your heroku config variable

例如,在这种情况下,生成的用户名是 heroku_g20xzxs8,密码是 vc8k708rh1qqgr17luq7satqct。如果您创建一个新用户 new_db_user 和密码 th1$PasswordR0x,您更新的连接字符串和您的 MONGODB_URI 配置变量的值将如下所示:

mongodb://new_db_user:th1$PasswordR0x@ds045622.mlab.com:41222/heroku_g20xzxs8

一旦您测试更新后的 MONGODB_URI 处于正常工作状态,请继续删除自动生成的用户 -- 是的,没有更多的漏洞!

首先立即通过 mongo CLI 设置新密码:

登录:

$ mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

更改密码:

$ db.changeUserPassword("yourusername", "S0m3NeWPaSW0RdPxmt1oOfL")

之后,您可以通过db.removeUser(用户名)删除用户名并重新创建db.createUser()。最多 mongo 2.6 db.removeUser().

可以更新整个用户 db.updateUser()

要部署新字符串,请执行 heroku:

 $ heroku config:set MONGODB_URI=mongodb://dbuser:dbpass@host1:port1,host2:port2/dbname

如果您不想使用 CLI/command 行方式,请完全删除用户并在 mLabs 上创建一个新用户 - 'Initial Home Screen' / 'MongoDB Deployments' / Users / 'Name-Readonly-X' .单击 'X' 删除并完成。添加新用户并在之后部署新字符串。