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