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