Maison > base de données > tutoriel mysql > Comment se connecter en toute sécurité à MySQL via le tunneling SSH en Python ?

Comment se connecter en toute sécurité à MySQL via le tunneling SSH en Python ?

Patricia Arquette
Libérer: 2024-12-21 16:25:10
original
492 Les gens l'ont consulté

How to Securely Connect to MySQL via SSH Tunneling in Python?

Connexion de Python à MySQL via le tunneling SSH

Dans les applications Python, l'accès aux bases de données MySQL est souvent nécessaire. Pour établir des connexions sécurisées, une technique consiste à utiliser un tunnel SSH. Cet article explique comment exploiter les paires de clés SSH pour créer un tunnel SSH et faciliter la connectivité MySQL via Python.

Considérez le code Python suivant :

import MySQLdb
db = MySQLdb.connect(host="sql.domain.com",
     user="dev", 
      passwd="*******", 
      db="appdb")
Copier après la connexion

Alors que le code ci-dessus établit une connexion directe au serveur MySQL, il peut y avoir des scénarios dans lesquels un tunnel SSH est requis pour une sécurité renforcée. Un tunnel SSH crypte la connexion, fournissant ainsi un canal de communication sécurisé.

Pour configurer un tunnel SSH et vous connecter à MySQL à l'aide de Python, suivez ces étapes :

  1. Importer Modules requis : Dans votre script Python, incluez les modules nécessaires, notamment pymysql, paramiko, pandas et sshtunnel.
  2. Établir une connexion SSH : Utilisez paramiko pour créer un client SSH et vous connecter au serveur SSH. Spécifiez l'hôte, le nom d'utilisateur et le chemin de la clé privée.
  3. Configurer le tunnel SSH : Utilisez le module sshtunnel pour créer un objet SSH TunnelForwarder. Définissez l'adresse de liaison distante comme nom d'hôte et port du serveur MySQL.
  4. Établissez une connexion MySQL : Utilisez pymysql pour vous connecter au serveur MySQL local via le tunnel SSH. Spécifiez le port comme port de liaison local du tunnel SSH.
  5. Exécuter les requêtes : Exécutez les requêtes SQL comme d'habitude via la connexion MySQL établie.
  6. Fermer les connexions : Après avoir terminé vos opérations, fermez les connexions MySQL et SSH pour libérer ressources.

Voici un exemple d'extrait de code qui illustre ces étapes :

import pymysql
import paramiko
import pandas as pd
from paramiko import SSHClient
from sshtunnel import SSHTunnelForwarder
from os.path import expanduser

# SSH Parameters
home = expanduser('~')
mypkey = paramiko.RSAKey.from_private_key_file(home + pkeyfilepath)
ssh_host = 'ssh_hostname'
ssh_user = 'ssh_username'
ssh_port = 22

# MySQL Parameters
sql_hostname = 'sql_hostname'
sql_username = 'sql_username'
sql_password = 'sql_password'
sql_main_database = 'db_name'
sql_port = 3306

with SSHTunnelForwarder(
        (ssh_host, ssh_port),
        ssh_username=ssh_user,
        ssh_pkey=mypkey,
        remote_bind_address=(sql_hostname, sql_port)) as tunnel:
    conn = pymysql.connect(host='127.0.0.1', user=sql_username,
            passwd=sql_password, db=sql_main_database,
            port=tunnel.local_bind_port)
    # Perform database operations here...
    conn.close()
Copier après la connexion

En implémentant ces techniques, vous pouvez vous connecter en toute sécurité à un serveur MySQL via un tunnel SSH en Python. Cette approche garantit la confidentialité et l'intégrité des données, ce qui la rend adaptée aux applications nécessitant des mesures de sécurité élevées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal