Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich Python mithilfe von SSH-Tunneling und Schlüsselpaaren auf demselben Computer sicher mit einem MySQL-Server?

Wie verbinde ich Python mithilfe von SSH-Tunneling und Schlüsselpaaren auf demselben Computer sicher mit einem MySQL-Server?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-04 00:04:11447Durchsuche

How to Securely Connect Python to a MySQL Server Using SSH Tunneling and Key Pairs on the Same Machine?

Python mit MySQL über SSH-Tunneling verbinden

Einführung

Einrichten sicherer Verbindungen zwischen Python und MySQL-Server sind für den Datenaustausch und die Datenverwaltung unerlässlich. Durch den Einsatz von SSH-Tunneling können wir die Sicherheit dieser Verbindungen erhöhen, indem wir einen verschlüsselten Kanal zwischen Client und Server erstellen. In diesem Artikel wird untersucht, wie man mit Python eine solche Tunnelverbindung herstellt.

Frage

Wie können wir Python ermöglichen, über einen SSH-Tunnel eine Verbindung zu einem MySQL-Server herzustellen, erleichtert durch SSH-Schlüsselpaare, wobei sich der SSH-Tunnelhost und der MySQL-Server auf demselben befinden Maschine?

Antwort

Verwendung von SSH TunnelForwarder

Der folgende Ansatz nutzt die SSHtunnel-Bibliothek, um den Tunnel einzurichten und dann eine Verbindung herzustellen zu MySQL mit pymysql:

import pymysql
import paramiko
import pandas as pd
from paramiko import SSHClient
from sshtunnel import SSHTunnelForwarder

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'

# Create the SSH tunnel
with SSHTunnelForwarder(
        (ssh_host, ssh_port),
        ssh_username=ssh_user,
        ssh_pkey=mypkey,
        remote_bind_address=(sql_hostname, sql_port)) as tunnel:

    # Connect to MySQL
    conn = pymysql.connect(host='127.0.0.1', user=sql_username,
            passwd=sql_password, db=sql_main_database,
            port=tunnel.local_bind_port)

    # Execute a query
    query = '''SELECT VERSION();'''
    data = pd.read_sql_query(query, conn)

    # Close the connection
    conn.close()

Schlüssel Komponenten

  • SSH Tunnel Forwarder: Diese Bibliothek verwaltet die SSH-Verbindung und baut einen Tunnel zwischen dem Client und dem SSH-Server auf.
  • Host-Schlüsselpaare: Diese Schlüssel werden zur Authentifizierung der SSH-Verbindung und zur Gewährleistung der Sicherheit verwendet Kommunikation.
  • SSHTunnelForwarder.remote_bind_address: Gibt an, wo der Tunnel eine Verbindung zum MySQL-Server herstellt.
  • PyMySQL: Wird zum Herstellen einer MySQL-Verbindung verwendet Der lokale Bindungsport des Tunnels.

Das obige ist der detaillierte Inhalt vonWie verbinde ich Python mithilfe von SSH-Tunneling und Schlüsselpaaren auf demselben Computer sicher mit einem MySQL-Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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