Maison >base de données >tutoriel mysql >Comment connecter en toute sécurité Python à un serveur MySQL distant via le tunneling SSH ?
Connexion de Python à MySQL via le tunneling SSH
Établir une connexion entre Python et un serveur MySQL distant via un tunnel SSH est essentiel pour sécuriser les données récupération et manipulation. Bien que les connexions MySQL de base soient simples, la création d'un tunnel SSH chiffré ajoute une couche de sécurité supplémentaire.
Voici comment permettre à Python de se connecter à MySQL via un tunnel SSH :
import pymysql import paramiko import pandas as pd from paramiko import SSHClient from sshtunnel import SSHTunnelForwarder from os.path import expanduser home = expanduser('~') mypkey = paramiko.RSAKey.from_private_key_file(home + pkeyfilepath) sql_hostname = 'sql_hostname' sql_username = 'sql_username' sql_password = 'sql_password' sql_main_database = 'db_name' sql_port = 3306 ssh_host = 'ssh_hostname' ssh_user = 'ssh_username' ssh_port = 22 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) query = '''SELECT VERSION();''' data = pd.read_sql_query(query, conn) conn.close()
Ce code établit un tunnel SSH entre la machine locale et le serveur MySQL distant à l'aide de SSHTunnelForwarder. La connexion SSH utilise une clé privée pour l'authentification, garantissant une sécurité renforcée.
Une fois le tunnel établi, une connexion Python MySQL est établie à l'adresse locale du tunnel, permettant un accès sécurisé à la base de données MySQL. Des requêtes peuvent ensuite être exécutées pour récupérer ou manipuler des données du serveur.
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!