Když spustíte mysql
příkaz, děláte to v shellu SSH. To znamená, že se připojujete k serveru běžícímu na vzdáleném počítači přes localhost
spojení. Zdá se, že tento vzdálený server není nastaven tak, aby k němu umožňoval vzdálená připojení, pouze připojení ze samotného počítače.
Budete potřebovat, aby se váš python skript připojil k serveru MySQL stejným způsobem jako vy, přes SSH. Můžete otevřít tunel SSH na port 3306 na vzdáleném serveru.
Modul, který pro tento účel rád používám, je: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()