Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Conectando-se ao MySQL em um servidor remoto de python


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