Mysql
 sql >> Base de données >  >> RDS >> Mysql

Se connecter à MySQL sur un serveur distant à partir de python

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