【问题标题】:Securing remote mongodb server to use with Mongoid保护远程 mongodb 服务器以与 Mongoid 一起使用
【发布时间】:2015-11-19 03:47:52
【问题描述】:

好吧,我已经竭尽全力为我的问题找到答案。

我有一个运行 Mongoid 3.16 的 RoR 应用程序和一个使用 Mongodb 3.05 的远程服务器。两台服务器在同一个网络上,我使用内部 IP 地址连接。

我遇到的问题是尝试保护连接。首先,如果我尝试将应用 IP 添加到 mongod.conf 文件中的 bind_ip 中,我会收到错误消息:

Cannot assign requested address for socket: app_ip_address

这里是 mongod.conf 中的 bind_ip:

#bind_ip=127.0.0.1,app_ip_address

如果我取消注释并尝试重新启动 mongodb,它会给我有关“无法分配请求的地址...”的错误,因此如果我将 bind_ip 注释掉,我可以从应用程序连接到 mongodb。我不喜欢这个想法,因为它允许任何连接。

我的 mongoid.yml 文件是:

production:
  sessions:
    default:
      database: my_database
      hosts:
        - mongodb_server_ip:27017

我还将数据库设置为有一个用户,但如果我将 Mongodb 的 auth 设置为 true,它将允许未经授权连接到“my_database”,但除非我再次进行身份验证,否则无法读取数据(我可以这样做命令行但不是通过 mongoid.yml 文件)

例如,如果我从应用服务器连接命令行:

mongo mongoddb_server_ip:27017/my_database

这可行,但是当我尝试查看集合时,我必须使用 db.auth(....) 才能看到它们。

我想如果我可以使用 mongodb 的用户名/密码来配置 mongoid.yml 会起作用,但我不知道该怎么做。

11/23 更新:

好的,我将 mongod.conf 文件设置为 auth = true。现在我可以通过 ssh 从应用服务器连接:

mongo mnogodb_server_ip:27017/my_database --username some_username --password some_password

这允许我连接和访问所有集合等。现在我需要身份验证,我更新了我的 mongoid.yml 文件:

production:
  sessions:
    default:
      database: my_database
      username: some_username
      password: some_password
      hosts:
        - mongodb_server_ip:27017

我重新启动服务器,但无法连接到远程数据库。

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid remote-server


    【解决方案1】:

    好吧,毕竟我发现 moped 2 不支持 MongoDB 3+ 的身份验证。

    看这里:

    Rails Mongoid fails to authenticate - failed with error 13: "not authorized for query on my_db.my_collection"

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 2019-02-21
      • 2017-06-29
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多