来自远程机器的 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正常时怎么回事,请大侠给说一下