Lorsque vous exécutez le mysql
commande, vous le faites dans un shell SSH. C'est-à-dire que vous vous connectez au serveur exécuté sur la machine distante via un localhost
lien. Ce serveur distant ne semble pas être configuré pour autoriser les connexions à distance, uniquement les connexions depuis la machine elle-même.
Vous aurez besoin que votre script python se connecte au serveur MySQL de la même manière que vous, via SSH. Vous pouvez ouvrir un tunnel SSH vers le port 3306 sur le serveur distant.
Le module que j'aime utiliser à cette fin est :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()