リモート サーバーの Mysql データベースにアクセスする必要がある場合、Mysql データベースのセキュリティ期間中は、ローカル接続のみを許可するようにセキュリティ対策が設定されています (つまり、使用するにはサーバーにログインしてください)、そうでない場合、リモート接続に直接アクセスできず、対応するポートが変更されているため、ssh に基づいてデータベースに接続する必要があります。データベースに接続する方法は、SSH を介した Navicat のインターフェイス接続に似ています。
#Navicat データベースへの接続サポート ライブラリのインストールpip install pymysql
## をインストールします
#pip install sshtunnel #当前最新 0.3.1版
Mysql への接続
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注意:
、cursor.close()
、conn.close( )
は、不正確を防ぐために標準化された方法で使用する必要があります。必要なバグ
SQL インジェクションのリスクを防ぐため
以上がSSHベースのPythonを使用してMySQLデータベースにリモート接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。