Heim > Datenbank > MySQL-Tutorial > Wie kann ich über SSH-Tunneling in Python eine sichere Verbindung zu MySQL herstellen?

Wie kann ich über SSH-Tunneling in Python eine sichere Verbindung zu MySQL herstellen?

Patricia Arquette
Freigeben: 2024-12-21 16:25:10
Original
565 Leute haben es durchsucht

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

Python mit MySQL über SSH-Tunneling verbinden

In Python-Anwendungen ist oft der Zugriff auf MySQL-Datenbanken notwendig. Um sichere Verbindungen herzustellen, besteht eine Technik darin, einen SSH-Tunnel zu verwenden. In diesem Artikel wird untersucht, wie Sie SSH-Schlüsselpaare nutzen können, um einen SSH-Tunnel zu erstellen und die MySQL-Konnektivität über Python zu erleichtern.

Bedenken Sie den folgenden Python-Code:

import MySQLdb
db = MySQLdb.connect(host="sql.domain.com",
     user="dev", 
      passwd="*******", 
      db="appdb")
Nach dem Login kopieren

Während der obige Code eine direkte Verbindung herstellt Zum MySQL-Server kann es Szenarien geben, in denen für erhöhte Sicherheit ein SSH-Tunnel erforderlich ist. Ein SSH-Tunnel verschlüsselt die Verbindung und stellt einen sicheren Kommunikationskanal bereit.

Um einen SSH-Tunnel einzurichten und mit Python eine Verbindung zu MySQL herzustellen, befolgen Sie diese Schritte:

  1. Importieren Erforderliche Module: Fügen Sie in Ihr Python-Skript die erforderlichen Module ein, einschließlich pymysql, paramiko, pandas und sshtunnel.
  2. SSH-Verbindung herstellen: Verwenden Sie paramiko, um einen SSH-Client zu erstellen und eine Verbindung zum SSH-Server herzustellen. Geben Sie den Host, den Benutzernamen und den privaten Schlüsselpfad an.
  3. SSH-Tunnel konfigurieren: Verwenden Sie das SSHtunnel-Modul, um ein SSH-TunnelForwarder-Objekt zu erstellen. Definieren Sie die Remote-Bind-Adresse als Hostnamen und Port des MySQL-Servers.
  4. MySQL-Verbindung herstellen: Verwenden Sie pymysql, um über den SSH-Tunnel eine Verbindung zum lokalen MySQL-Server herzustellen. Geben Sie den Port als lokalen Bindungsport des SSH-Tunnels an.
  5. Abfragen ausführen:SQL-Abfragen wie gewohnt über die hergestellte MySQL-Verbindung ausführen.
  6. Verbindungen schließen :Nach Abschluss Ihrer Vorgänge schließen Sie die MySQL- und SSH-Verbindungen, um Ressourcen freizugeben.

Hier ist Ein Beispiel-Codeausschnitt, der diese Schritte demonstriert:

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()
Nach dem Login kopieren

Durch die Implementierung dieser Techniken können Sie über einen SSH-Tunnel in Python eine sichere Verbindung zu einem MySQL-Server herstellen. Dieser Ansatz gewährleistet die Vertraulichkeit und Integrität der Daten und eignet sich daher für Anwendungen, die erhöhte Sicherheitsmaßnahmen erfordern.

Das obige ist der detaillierte Inhalt vonWie kann ich über SSH-Tunneling in Python eine sichere Verbindung zu MySQL herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage