Quando você executa o
mysql
comando, você está fazendo isso em um shell SSH. Ou seja, você está se conectando ao servidor em execução na máquina remota por meio de um localhost
conexão. Esse servidor remoto não parece estar configurado para permitir conexões remotas com ele, apenas conexões da própria máquina. Você precisará ter seu script python conectado ao servidor MySQL da mesma maneira que você, via SSH. Você pode abrir um túnel SSH para a porta 3306 no servidor remoto.
O módulo que gosto de usar para esse fim é: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()