sql >> Base de Datos >  >> RDS >> Mysql

Conexión a MySQL en un servidor remoto desde python

Cuando ejecuta el mysql comando, está haciendo esto en un shell SSH. Es decir, se está conectando al servidor que se ejecuta en la máquina remota a través de un localhost conexión. Ese servidor remoto no parece estar configurado para permitir conexiones remotas, solo conexiones desde la propia máquina.

Deberá tener su secuencia de comandos de python conectada al servidor MySQL de la misma manera que usted, a través de SSH. Puede abrir un túnel SSH al puerto 3306 en el servidor remoto.

El módulo que me gusta usar para este propósito es:https://pypi.python.org/pypi/ sshtúnel

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