来自远程机器的 Pymongo 连接超时

Posted

技术标签:

【中文标题】来自远程机器的 Pymongo 连接超时【英文标题】:Pymongo connection timeout from remote machine 【发布时间】:2015-02-12 11:53:38 【问题描述】:

我有一个在 AWS EC2 上运行的 Bitnami MEAN 堆栈。我正在尝试使用 PyMongo 从远程计算机进行连接。

from pymongo import MongoClient
conn = MongoClient('mongodb://username:password@ec2blah.us-east-1.compute.amazonaws.com:27017/dbname')

但我不断收到类似pymongo.errors.ConnectionFailure: timed out 的错误

我已编辑 /opt/bitnami/mongodb/mongodb.conf 以通过注释掉 bind_ip = 127.0.0.1 和未注释的 bind_ip = 0.0.0.0 以及注释/取消注释这些行的所有排列来允许外部连接。

我在网上浏览了大约 90 分钟,现在尝试不同的东西,但没有运气!

【问题讨论】:

@alecxe - 我试过了,上面写着MongoDB shell version: 2.6.5 url can't have host or port if you specify them individually 【参考方案1】:

在mongoDB服务器上,做端口连接测试,确保DB服务运行良好。如果没有,请启动服务。

telnet ec2blah.us-east-1.compute.amazonaws.com 27017

在远程机器上,做端口连接测试,确保没有防火墙问题。

telnet ec2blah.us-east-1.compute.amazonaws.com 27017

如果您有连接问题,您需要在此实例上检查 security groups

Click the ec2 instance name --> Description --> view rules, you should see the ports are opened

If not, create a new security group , such as `mongoDB`, tcp port 27017 should be opened for inbound traffic, then assign to that instance. 

您现在应该可以连接它了。

【讨论】:

远程机器超时,EC2 提示 Connected to ec2blah.us-west-1.compute.amazonaws.com. Escape character is '^]'. 我正在创建一个新的安全组,因为它只有 tcp 端口 22、80、443 设置为 0.0.0.0/0 - - 我应该打开哪些端口? TCP 端口 27017 应为入站流量打开 我创建了安全组,但我不确定它是否已启用。我还需要做其他事情吗? 单击实例 --> 联网 --> 更改安全组,您需要手动将新的安全组添加到该实例。就是这样,你可以远程连接它。【参考方案2】:

在MongoDB启动时,将bind_ip参数设置为::,0.0.0.0

mongod --bind_ip ::,0.0.0.0

在 MongoDB 的文档中了解更多信息:IP Binding。

【讨论】:

以上是关于来自远程机器的 Pymongo 连接超时的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL远程连接Oracle报连接超时,PLSQ本地连接Oracle正常时怎么回事,请大侠给说一下

使用本地 kafka-connect 集群连接远程数据库的连接超时

NX Server的连接超时了

oracle 远程连接超时问题!

eclipse远程调试超时问题

pycharm远程连接超时