【发布时间】: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