web-dev-qa-db-fra.com

Comment connecter mongodb à distance avec Pymongo

Lorsque j'utilise MongoChef pour connecter une base de données mongo distante, j'utilise les paramètres suivants:


Serveur

  • Serveur: localhost
  • Port: 27017

Tunnel SSH

  • Adresse SSH: 10.1.0.90

  • Port: 25

  • Nom d'utilisateur SSH: nom d'utilisateur

  • Mot de passe SSH: mot de passe


Lorsque je me connecte avec Pymongo, j'ai le code suivant:

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)

Mais j'ai l'erreur suivante:

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

S'il vous plaît, pourriez-vous m'aider avec ce problème? Qu'ai-je fait de mal?

La solution qui fonctionne pour moi.

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()