连接到安装在不同服务器上的MongoDb DB

时间:2016-02-17 17:40:03

标签: python mongodb ubuntu digital-ocean

我们必须服务器。我在其中一台服务器上安装了MongoDB(UBUNTU - Digital Ocean VPS)。

当我运行脚本以使用localhost从同一服务器检索数据时,我可以完美地做到这一点。

import pymongo
//SERVER = 'mongodb://localhost:27017/myproject'
SERVER = 'mongodb://root:password@x.x.x.x:27017/myproject' where x.x.x.x is the address of my server 
connection=pymongo.MongoClient(SERVER)
db = connection.myproject
print list(db.coll.find())

问题是我无法连接到此数据库。请注意,我可以使用服务器内的localhost来ssh并运行脚本;但不是服务器外的情况。

我是否需要进行一些配置:

2 个答案:

答案 0 :(得分:0)

您必须允许远程访问

vi /etc/mongod.conf

仅收听本地界面。

bind_ip = 127.0.0.1

您必须添加其他服务器的IP。例如:

侦听本地接口和192.168.0.100。

bind_ip = 127.0.0.1,192.168.0.100

注释听所有界面

Nota:逗号分开

我希望能帮助

答案 1 :(得分:0)

出于开发目的,您可以打开像

这样的ssh隧道
ssh <UBUNTU - Digital Ocean VPS> -L27018:localhost:27017

然后以

连接到远程数据库
SERVER = 'mongodb://root:password@localhost:27018/myproject'

ssh连接仍然打开。您可以使用任何自由端口而不是27018。

否则,您需要重新配置mongodb以侦听所有接口。在mongodb config中注释掉bindIp行并重新启动服务器。这将使数据库可公开访问,因此请确保使用强密码并且不允许匿名访问。

最后,如果您使用的是VPN,则需要在mongodb配置中取消注释bindIp行,并在那里添加VPN接口,例如:

bindIp = 127.0.0.1,10.0.1.12

其中10.0.1.12应替换为ubuntu框的vpn接口。您可以使用ifconfig找到确切的值。重要提示:昏迷周围没有空间。