无法远程验证mongodb

时间:2015-04-06 04:29:02

标签: ruby-on-rails mongodb authentication heroku digital-ocean

我无法远程验证mongodb。我正在运行由DigitalOcean One-Click安装程序提供的MongoDB 3.0.0,我似乎无法正确设置身份验证。

我有一个名为wbio_production的数据库。我尽可能地遵循mongodb docs教程。当我执行:

> 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中填写连接表单时,它无法成功连接到数据库。授权始终失败,但它确实成功连接到数据库。

我尝试了以下使用上述用户的组合:

  1. DB:管理员,用户:siteUserAdmin
  2. DB:管理员,用户:herokuUser
  3. DB:wbio_production,User:siteUserAdmin
  4. DB:wbio_production,用户:herokuUser
  5. 所有这些都结束了在heroku日志中返回的一些输出类似:

      

    失败,错误13:“未授权查询   wbio_production.mongoid_forums_forums“

    我尝试重新安装mongodb,根据不同的教程重新创建用户,并尝试不同的人解释。我花了大约5个小时来寻找解决问题的方法,现在我必须转向SO寻求建议。我确信这是一个简单的错误,我不是从文档中理解,也不是我在设置中不断遗漏的东西。

    我该怎样做才能获得安全且功能强大的MongoDB服务器?谢谢!

2 个答案:

答案 0 :(得分:1)

您需要使用绑定配置mongod,以便客户端可以远程连接。

bind_ip = 0.0.0.0

答案 1 :(得分:0)

Robomongo身份验证不适用于MongoDB 3+。我建议切换到MongoChef。 http://3t.io/mongochef/。我强烈推荐它,因为它包含了比Robomongo更多的功能。

另一件值得关注的事情......

如果您还使用Mongoid,它目前正在进行大量重写。 Mongoid 5将降落助力车https://www.mongodb.com/blog/post/announcing-ruby-driver-20-rewrite

如果您将Mongoid 4与MongoDB 3+一起使用,请查看我的其他答案。 Rails Mongoid fails to authenticate - failed with error 13: "not authorized for query on my_db.my_collection"