当我使用MongoChef连接远程mongo数据库时,我使用以下参数:


Server

  • Server:本地主机
  • Port: 27017

SSH Tunnel

  • SSH address: 10.1.0.90

  • Port: 25

  • SSH Username:用户名

  • SSH Password:密码


当我连接Pymongo时,我有下一个代码:

import pymongo

MONGO_HOST = "10.1.0.90"
MONGO_PORT = 25
MONGO_DB = "db_name"
MONGO_USER = "username"
MONGO_PASS = "password"

con = pymongo.MongoClient(MONGO_HOST, MONGO_PORT)
db = con[MONGO_DB]
db.authenticate(MONGO_USER, MONGO_PASS)

print(db)

但我还有一个错误:

pymongo.errors.ServerSelectionTimeoutError: 10.1.2.84:27017: [Errno 111] Connection refused

拜托,你能帮我解决这个问题吗?我做错了什么?

推荐答案

对我有效的解决方案.

from sshtunnel import SSHTunnelForwarder
import pymongo
import pprint

MONGO_HOST = "REMOTE_IP_ADDRESS"
MONGO_DB = "DATABASE_NAME"
MONGO_USER = "LOGIN"
MONGO_PASS = "PASSWORD"

server = SSHTunnelForwarder(
    MONGO_HOST,
    ssh_username=MONGO_USER,
    ssh_password=MONGO_PASS,
    remote_bind_address=('127.0.0.1', 27017)
)

server.start()

client = pymongo.MongoClient('127.0.0.1', server.local_bind_port) # server.local_bind_port is assigned local port
db = client[MONGO_DB]
pprint.pprint(db.collection_names())

server.stop()

Python-3.x相关问答推荐

使用魔方无法从图像中识别单个字符

Numpy将3D数组的每个切片相乘以进行转置并对其求和

Python:字典和列表:在列表字典中搜索子列表的有效方法

在循环访问XML中的多个层时,xml.etree.Elementree Python3解析器不起作用

如何从枚举中获取某个值?

按一列分组,如果日期列相同,则在数字列中填写缺少的值

requests.exceptions.InvalidSchema:未找到连接适配器.我试图遍历一个列表

我想使用命令提示符安装 cv2

Pandas 在每组两个条件之间获得时间增量

attrs 将 list[str] 转换为 list[float]

Jupyter Notebook 拒绝打印一些字符串

如何在Pandas 中按条件计算分组?

使用 python-binance 时,heroku [regex._regex_core.error: bad escape \d at position 7] 出错

Tkinter IntVar 返回 PY_VAR0 而不是值

为什么 f-strings 比 str() 更快地解析值?

在两个数据框之间查找相等的列

virtualenv virtualenvwrapper virtualenv:错误:无法识别的参数:--no-site-packages

根据条件过滤元组列表

变量类型注解NameError不一致

如何将python日志(log)级别名称转换为整数代码