Wanneer u de mysql
. uitvoert commando, doe je dit in een SSH-shell. Dat wil zeggen dat u verbinding maakt met de server die op de externe machine draait via een localhost
verbinding. Die externe server lijkt niet te zijn ingesteld om externe verbindingen toe te staan, alleen verbindingen vanaf de machine zelf.
U moet uw python-script via SSH op dezelfde manier met de MySQL-server verbinden als u bent. U kunt een SSH-tunnel openen naar poort 3306 op de externe server.
De module die ik hiervoor graag gebruik is: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()