ホームページ > データベース > mysql チュートリアル > Python で SSH トンネリング経由で MySQL に安全に接続するにはどうすればよいですか?

Python で SSH トンネリング経由で MySQL に安全に接続するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-21 16:25:10
オリジナル
571 人が閲覧しました

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

SSH トンネリング経由で Python を MySQL に接続する

Python アプリケーションでは、多くの場合、MySQL データベースへのアクセスが必要になります。安全な接続を確立するには、SSH トンネルを使用する手法があります。この記事では、SSH キー ペアを利用して SSH トンネルを作成し、Python を介して MySQL 接続を容易にする方法について説明します。

次の Python コードを考えてみましょう。

import MySQLdb
db = MySQLdb.connect(host="sql.domain.com",
     user="dev", 
      passwd="*******", 
      db="appdb")
ログイン後にコピー

上記のコードは直接接続を確立します。 MySQL サーバーへの接続では、セキュリティを強化するために SSH トンネルが必要になるシナリオが考えられます。 SSH トンネルは接続を暗号化し、通信用の安全なチャネルを提供します。

SSH トンネルを設定し、Python を使用して MySQL に接続するには、次の手順に従います。

  1. インポート必要なモジュール: Python スクリプトに、pymysql、paramiko、pandas などの必要なモジュールを含めます。 sshtunnel.
  2. SSH 接続の確立: paramiko を使用して SSH クライアントを作成し、SSH サーバーに接続します。ホスト、ユーザー名、および秘密キーのパスを指定します。
  3. SSH トンネルの構成: sshtunnel モジュールを使用して、SSH TunnelForwarder オブジェクトを作成します。リモート バインド アドレスを MySQL サーバーのホスト名とポートとして定義します。
  4. MySQL 接続の確立: pymysql を使用して、SSH トンネル経由でローカル MySQL サーバーに接続します。ポートを SSH トンネルのローカル バインド ポートとして指定します。
  5. クエリの実行: 確立された MySQL 接続を通じて通常どおり SQL クエリを実行します。
  6. 接続を閉じる: 操作が完了したら、MySQL と SSH 接続を閉じて解放します。

これらの手順を示すコード スニペットの例を次に示します。

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()
ログイン後にコピー

これらの手法を実装すると、Python の SSH トンネル経由で MySQL サーバーに安全に接続できます。このアプローチにより、データの機密性と整合性が確保され、高度なセキュリティ対策を必要とするアプリケーションに適しています。

以上がPython で SSH トンネリング経由で MySQL に安全に接続するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート