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