Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbindung zu MySQL in einem Remote-Server von Python

Wenn Sie mysql ausführen Befehl tun Sie dies in einer SSH-Shell. Das heißt, Sie verbinden sich über einen localhost mit dem Server, der auf dem Remote-Computer läuft Verbindung. Dieser Remote-Server scheint nicht eingerichtet zu sein, um Remote-Verbindungen zu ihm zuzulassen, sondern nur Verbindungen von der Maschine selbst.

Sie müssen Ihr Python-Skript auf die gleiche Weise wie Sie über SSH mit dem MySQL-Server verbinden. Sie können einen SSH-Tunnel zu Port 3306 auf dem Remote-Server öffnen.

Das Modul, das ich zu diesem Zweck gerne verwende, ist:https://pypi.python.org/pypi/ sshtunnel

from sshtunnel import SSHTunnelForwarder
import pymysql

server = SSHTunnelForwarder(
    'XXX.XXX.XXX.XXX',
    ssh_username='root',
    ssh_password='my_server_password',
    remote_bind_address=('127.0.0.1', 3306)
)
server.start()

cnx = pymysql.connect(
    host='127.0.0.1',
    port=server.local_bind_port,
    user='root',
    password='my_database_password',
    db='my_database'
)

# Make sure to call server.stop() when you want to disconnect
# after calling cnx.close()