ホームページ  >  記事  >  データベース  >  SSHベースのPythonを使用してMySQLデータベースにリモート接続する方法

SSHベースのPythonを使用してMySQLデータベースにリモート接続する方法

WBOY
WBOY転載
2023-05-27 16:07:131328ブラウズ

背景

リモート サーバーの Mysql データベースにアクセスする必要がある場合、Mysql データベースのセキュリティ期間中は、ローカル接続のみを許可するようにセキュリティ対策が設定されています (つまり、使用するにはサーバーにログインしてください)、そうでない場合、リモート接続に直接アクセスできず、対応するポートが変更されているため、ssh に基づいてデータベースに接続する必要があります。データベースに接続する方法は、SSH を介した Navicat のインターフェイス接続に似ています。

SSHベースのPythonを使用してMySQLデータベースにリモート接続する方法

#Navicat

SSHベースのPythonを使用してMySQLデータベースにリモート接続する方法

データベースへの接続

サポート ライブラリのインストール

  • Mysql に接続したい場合は、まず pymysql をインストールする必要があります

  • pip install pymysql
  • ssh ベースのライブラリ sshtunnel

    ## をインストールします

    #
    pip install sshtunnel    #当前最新 0.3.1版
  • 最新の sshtunnel ライブラリをインストールすることをお勧めします。古いバージョンのライブラリにはいくつかのバグがあります。

Mysql への接続

ssh に基づいて Mysql に接続すると、sshtunnel のドキュメントを確認できます。これには、いくつかのケースが含まれています

with SSHTunnelForwarder(
        ('192.168.1.1', 2222),
        ssh_password='123456',
        ssh_username='root',
        remote_bind_address=('127.0.0.1', 3306)) as server:
    print('SSH连接成功')
    conn = pymysql.connect(host='127.0.0.1',
                           port=server.local_bind_port,
                           user='root',
                           database='data',
                           charset='utf8')
    print('mysql数据库连接成功')
    cursor = conn.cursor()
    ...  #获取数据操作,此处省略
    cursor.close()
    conn.close()

From クエリ関数の定義

他の場所での使用を容易にするために、上記の接続を関数にカプセル化できます

def mysql_ssh(sql,args=None):
    with SSHTunnelForwarder(
            ('192.168.1.1', 2222),
            ssh_password='123456',
            ssh_username='root',
            remote_bind_address=('127.0.0.1', 3306)) as server:
        print('SSH连接成功')
        conn = pymysql.connect(host='127.0.0.1',
                               port=server.local_bind_port,
                               user='root',
                               database='data',
                               charset='utf8')
        print('mysql数据库连接成功')
        cursor = conn.cursor()
        print('游标获取成功')
        try:
            print(f'执行查询语句:{sql}  参数:{args}')
            cursor.execute(sql,args)
            print('数据查询成功')
            conn.commit()
            print('事务提交成功')
            datas = cursor.fetchall()
            success = True
        except:
            print('数据查询失败')
            datas = None
            success = False
        print('正在关闭数据库连接')
        cursor.close()
        conn.close()
    return datas, success

注意:

    データベースを使用する場合、
  • conn.commit()

    cursor.close()conn.close( ) は、不正確を防ぐために標準化された方法で使用する必要があります。必要なバグ

  • パラメータを渡すときにこのメソッドを使用することをお勧めします
  • cursor.execute(sql,args) )

    SQL インジェクションのリスクを防ぐため

以上がSSHベースのPythonを使用してMySQLデータベースにリモート接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。