【问题标题】:Unable to authenticate mongodb remotely无法远程验证 mongodb
【发布时间】: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 中填写连接表时,它无法成功连接到数据库。授权总是失败,但它确实成功连接到数据库。

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

  1. 数据库:管理员,用户:siteUserAdmin
  2. 数据库:管理员,用户:herokuUser
  3. 数据库:wbio_production,用户:siteUserAdmin
  4. 数据库: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


【解决方案1】:

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

另一件事要记住...

如果您也在使用 Mongoid,它目前正在进行大规模重写。 Mongoid 5 将放弃 Moped 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"

【讨论】:

    【解决方案2】:

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

    bind_ip = 0.0.0.0
    

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 1970-01-01
      • 2020-02-11
      • 2020-12-03
      • 2016-05-21
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 2018-11-12
      相关资源
      最近更新 更多