Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyambung dengan Selamat ke MySQL melalui SSH Tunneling dalam Python?

Bagaimana untuk Menyambung dengan Selamat ke MySQL melalui SSH Tunneling dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 16:25:10493semak imbas

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

Menyambung Python ke MySQL melalui SSH Tunnelling

Dalam aplikasi Python, mengakses pangkalan data MySQL selalunya diperlukan. Untuk mewujudkan sambungan selamat, satu teknik melibatkan penggunaan terowong SSH. Artikel ini meneroka cara memanfaatkan pasangan kunci SSH untuk mencipta terowong SSH dan memudahkan sambungan MySQL melalui Python.

Pertimbangkan kod Python berikut:

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

Sementara kod di atas mewujudkan sambungan langsung kepada pelayan MySQL, mungkin terdapat senario di mana terowong SSH diperlukan untuk keselamatan yang dipertingkatkan. Terowong SSH menyulitkan sambungan, menyediakan saluran selamat untuk komunikasi.

Untuk menyediakan terowong SSH dan menyambung ke MySQL menggunakan Python, ikut langkah berikut:

  1. Import Modul yang Diperlukan: Dalam skrip Python anda, masukkan modul yang diperlukan, termasuk pymysql, paramiko, panda dan sshtunnel.
  2. Tubuhkan Sambungan SSH: Gunakan paramiko untuk mencipta klien SSH dan menyambung ke pelayan SSH. Tentukan hos, nama pengguna dan laluan kunci peribadi.
  3. Konfigurasikan Terowong SSH: Gunakan modul sshtunnel untuk mencipta objek SSH TunnelForwarder. Tentukan alamat ikatan jauh sebagai nama hos dan port pelayan MySQL.
  4. Tetapkan Sambungan MySQL: Gunakan pymysql untuk menyambung ke pelayan MySQL tempatan melalui terowong SSH. Tentukan port sebagai port pengikat tempatan bagi terowong SSH.
  5. Jalankan Pertanyaan: Jalankan pertanyaan SQL seperti biasa melalui sambungan MySQL yang telah ditetapkan.
  6. Tutup Sambungan : Selepas menyelesaikan operasi anda, tutup sambungan MySQL dan SSH untuk dilepaskan sumber.

Berikut ialah contoh coretan kod yang menunjukkan langkah-langkah ini:

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

Dengan melaksanakan teknik ini, anda boleh menyambung dengan selamat ke pelayan MySQL melalui terowong SSH dalam Python. Pendekatan ini memastikan kerahsiaan dan integriti data, menjadikannya sesuai untuk aplikasi yang memerlukan langkah keselamatan yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk Menyambung dengan Selamat ke MySQL melalui SSH Tunneling dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn