es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conéctese a la base de datos de MySQL (a través de SSH) en un script de python.

Estoy en una situación en la que necesito acceder a una base de datos MySQL que se está ejecutando en otra computadora (Computadora B). Desafortunadamente, las computadoras no están en la misma red local. La única forma que encontré de acceder a la base de datos SQL en la Computadora B desde mi laptop (Computadora A) es a través de SSH.

Mi pregunta es, ¿puedo acceder a la base de datos SQL a través de SSH desde Python?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes acceder a la base de datos de MySQL a través de SSH desde Python. Puedes utilizar la biblioteca paramiko en Python para establecer una conexión SSH con el equipo remoto y luego utilizar la biblioteca pymysql para conectarte a la base de datos. Aquí están los pasos que puedes seguir:

    1. Instala las bibliotecas paramiko y pymysql utilizando pip:
    pip install paramiko
    pip install pymysql
    
    1. Importa las bibliotecas en tu script de Python:
    import paramiko
    import pymysql
    
    1. Crea un objeto cliente SSH y conéctate al servidor remoto:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('ip_servidor_remoto', username='nombre_de_usuario', password='contraseña')
    

    Sustituye ip_servidor_remoto, nombre_de_usuario y contraseña con los valores respectivos para tu servidor remoto.

    1. Crea un túnel SSH para redirigir el puerto de la base de datos a un puerto local:
    ssh_tunnel = ssh.get_transport().open_channel('direct-tcpip', ('ip_mysql_remota', 3306), ('localhost', 3306))
    

    Sustituye ip_mysql_remota con la dirección IP del equipo que ejecuta la base de datos de MySQL.

    1. Conéctate a la base de datos de MySQL utilizando la biblioteca pymysql:
    db = pymysql.connect(host='localhost', port=3306, user='nombre_usuario_db', passwd='contraseña_db', db='nombre_base_datos', 
                         unix_socket=ssh_tunnel)
    

    Sustituye nombre_usuario_db, contraseña_db y nombre_base_datos con los valores respectivos para tu base de datos de MySQL.

    1. Realiza tus operaciones de base de datos como de costumbre:
    cursor = db.cursor()
    cursor.execute('SELECT * FROM mi_tabla')
    resultados = cursor.fetchall()
    
    1. Cierra el túnel SSH y la conexión a la base de datos:
    ssh_tunnel.close()
    db.close()
    

    ¡Eso es todo! Ahora puedes acceder a tu base de datos de MySQL desde Python a través de SSH.

Comments are closed.