如何将远程MongoDB与Pymongo连接



当我使用mongochef连接远程mongo数据库时,我使用下一个参数:


服务器

  • 服务器: localhost
  • 端口: 27017

SSH隧道

  • ssh地址: 10.1.0.90

  • 端口: 25

  • ssh用户名:用户名

  • ssh密码:密码


当我与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()

或,您只需pip install ssh-pymongo

from ssh_pymongo import MongoSession
session = MongoSession('10.1.0.90',
    port=25,
    user='USERNAME',
    password='PASSWORD',
    uri='mongodb://127.0.0.1:27017'
)
db = session.connection['DATABASE_NAME']
print(db)
session.stop()

包装中的更多示例:

示例1-如果您的用户名相同,并且您已经配置了SSH键。

from ssh_pymongo import MongoSession
session = MongoSession('db.example.com')
db = session.connection['db-name']

示例2-如果您有一些自定义的本地身份验证。

from ssh_pymongo import MongoSession
session = MongoSession('db.example.com',
    uri='mongodb://user:password@127.0.0.1/?authSource=admin&authMechanism=SCRAM-SHA-256')
db = session.connection['db-name']

示例3-如果要使用不同的端口和键。

from ssh_pymongo import MongoSession
session = MongoSession(
    host='db.example.com',
    port=21,
    user='myuser',
    key='/home/myplace/.ssh/id_rsa2'
)
db = session.connection['db-name']

这帮助我将pymongo与Python中的MLAB数据库联系起来:

from pymongo import MongoClient
MONGO_HOST = "ds123456.mlab.com"
MONGO_PORT = 23456
MONGO_DB = "db name"
MONGO_USER = "Username"
MONGO_PASS = "password"
connection = MongoClient(MONGO_HOST, MONGO_PORT)
db = connection[MONGO_DB]
db.authenticate(MONGO_USER, MONGO_PASS)

最新更新