Mysql
 sql >> Database >  >> RDS >> Mysql

Collegamento a MySQL in un server remoto da Python

Quando esegui mysql comando, lo stai facendo in una shell SSH. Cioè ti stai connettendo al server in esecuzione sulla macchina remota tramite un localhost connessione. Quel server remoto non sembra essere configurato per consentire connessioni remote ad esso, solo connessioni dalla macchina stessa.

Avrai bisogno che il tuo script Python si connetta al server MySQL nello stesso modo in cui lo sei, tramite SSH. Puoi aprire un tunnel SSH alla porta 3306 sul server remoto.

Il modulo che mi piace usare per questo scopo è: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()