Maison > base de données > tutoriel mysql > Comment puis-je me connecter en toute sécurité à un serveur MySQL distant à partir de Python à l'aide du tunneling SSH ?

Comment puis-je me connecter en toute sécurité à un serveur MySQL distant à partir de Python à l'aide du tunneling SSH ?

Barbara Streisand
Libérer: 2024-12-10 18:04:10
original
1020 Les gens l'ont consulté

How Can I Securely Connect to a Remote MySQL Server from Python Using SSH Tunneling?

Activation du tunneling SSH pour la connectivité Python-MySQL

Dans le domaine de la connectivité des bases de données, l'utilisation de MySQLdb pour établir des connexions Python aux serveurs distants est une solution pratique courante. Bien que cette méthode remplisse son objectif, il peut être nécessaire de sécuriser la connexion via un tunnel SSH pour améliorer la confidentialité des données. Cet article explique comment y parvenir avec une implémentation Python.

Traditionnellement, les connexions Python aux serveurs MySQL sont établies directement via le module MySQLdb. Cependant, pour établir un tunnel SSH sécurisé pour la connexion, des modifications sont nécessaires. En utilisant des bibliothèques externes telles que paramiko et sshtunnel, il est possible de créer une connexion SSH et de transférer un port vers le serveur MySQL cible.

Voici un exemple de code qui montre comment configurer un tunnel SSH pour Python-MySQL. connectivité :

import pymysql
import paramiko
from paramiko import SSHClient
from sshtunnel import SSHTunnelForwarder

# SSH Configuration
ssh_host = 'ssh_hostname'
ssh_user = 'ssh_username'
ssh_port = 22
mypkey = paramiko.RSAKey.from_private_key_file('path/to/ssh/key')

# MySQL Configuration
sql_hostname = 'sql_hostname'
sql_username = 'sql_username'
sql_password = 'sql_password'
sql_main_database = 'db_name'
sql_port = 3306
sql_ip = '1.1.1.1.1'

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)
    # Execute queries and access data as usual
    conn.close()
Copier après la connexion

En exploitant ces bibliothèques, Python peut établir une connexion sécurisée à un serveur MySQL distant via un tunnel SSH. Cette approche améliore considérablement la sécurité des données, en particulier lorsqu'il s'agit d'informations confidentielles ou sensibles.

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