[英]pymongo cannot connect to database on remote server
我已经安装了在外部主机服务器上运行的mongodb服务器,通过在客户端计算机外壳中执行以下操作,可以轻松连接mongo客户端:
162.243.27.34 --port 27017
但是当我尝试使用python使用pymongo连接到服务器时,得到以下输出
import pymongo
client = pymongo.MongoClient('162.243.27.34', 27017)
错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 352, in __init__
raise ConnectionFailure(str(e))
pymongo.errors.ConnectionFailure: could not connect to 162.243.27.34:27017: [Errno 111] Connection refused
我在这里做错了什么?
数据库服务器位于IP 162.243.27.34上,客户端是具有不同IP的单独服务器。 在以上两种情况下的示例中,我都尝试从远程客户端服务器进行连接,而不是连接到“ localhost”。
数据库服务器上有防火墙,但是客户端确实可以访问,并且由于mongo客户端命令行程序可以从客户端服务器正常连接,所以我假设从客户端到数据库服务器的连接没有网络问题,而是我使用python进行连接时出现问题。
运行命令:
cat /etc/mongodb.conf
说明:
bind_ip = 127.0.0.1
#port = 27017
我也在使用MongoDB Shell版本:2.0.4
将bind_ip = 127.0.0.1
替换为bind_ip = 127.0.0.1
bind_ip = 0.0.0.0
以允许从远程主机连接到MongoDB。
注意:如果您有多个节点,则可能需要处理在应用服务器代码中识别哪个节点是主要节点并设置与之的连接。 这意味着您需要对每个数据节点执行上述操作。 或者,将一个数据节点的优先级设置为1,将其余所有数据节点的优先级设置为0(使用Mongo Shell)。 例如:
cfg = rs.config()
cfg.members[<node id>].priority = 0
rs.reconfig(cfg)
我正在将MongoDB与Google Cloud一起使用(一键部署2个节点+仲裁器),并且运行良好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.