【发布时间】:2015-06-10 12:02:14
【问题描述】:
我无法远程验证 mongodb。我正在运行 DigitalOcean One-Click 安装程序提供的 MongoDB 3.0.0,但我似乎无法正确设置身份验证。
我有 1 个名为 wbio_production 的数据库。我尽可能地遵循了 mongodb 文档教程。当我执行时:
> db.auth("siteUserAdmin","MYPASSWORD")
1
> db.getUsers()
输出是:
{
"_id" : "admin.siteUserAdmin",
"user" : "siteUserAdmin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
当我切换到 wbio_production 数据库并执行相同的 getUsers() 时:
> use wbio_production
switched to db wbio_production
> db.getUsers()
[
{
"_id" : "wbio_production.herokuUser",
"user" : "herokuUser",
"db" : "wbio_production",
"roles" : [
{
"role" : "userAdmin",
"db" : "wbio_production"
},
{
"role" : "readWrite",
"db" : "wbio_production"
}
]
}
]
但是,当我在 Robomongo 中填写连接表时,它无法成功连接到数据库。授权总是失败,但它确实成功连接到数据库。
我已经尝试了以下使用上述用户的组合:
- 数据库:管理员,用户:siteUserAdmin
- 数据库:管理员,用户:herokuUser
- 数据库:wbio_production,用户:siteUserAdmin
- 数据库:wbio_production,用户:herokuUser
所有这些最终都会在类似的 heroku 日志中返回一些输出:
因错误 13 失败:“未授权查询 wbio_production.mongoid_forums_forums"
我尝试过重新安装 mongodb,根据不同的教程重新创建用户,只是尝试不同的人的解释。我已经花了大约 5 个小时来寻找我的问题的解决方案,现在我必须向 SO 寻求您的建议。我确定这是我自己的一个简单错误,我从文档中无法理解,或者我在设置中不断缺少的东西。
我必须做什么才能获得安全且功能强大的 MongoDB 服务器?谢谢!
【问题讨论】:
-
当您连接到 mongo 时如何验证用户身份?
-
一个简单的问题,我可以假设您是通过 ssh 连接到 mongo shell 来执行上面的 mongo 吗?如果是这样,问题可能出在 robomongo 上,正如我在他们的网站上发现的那样: 注意:我们正在为即将到来的 Robomongo 0.9.x 版本系列更新 MongoDB 3.0 兼容性。如果是这种情况,我建议使用 mongo shell 来做你需要做的事情并设置 mms (mms.mongodb.com) 我相信对你的实例进行监督是免费的。 NewRelic 也有免费的插件来做到这一点。
-
您绝对应该尝试从 mongo shell 进行连接,这样您和数据库之间的层数就会减少。
-
你验证过 mongod.config 文件中的配置了吗?
标签: ruby-on-rails mongodb authentication heroku digital-ocean