最近、業務でも python3 を書くことが多くなってきました
MySQL というか、MariaDB との連携も多くなり・・・。
ただし、業務上 MySQL のポートは開放したくないので SSH 経由で接続を調べました
簡単なコードは下記の通り
#!/usr/bin/env python3 # -*- encoding: utf-8 -*- from sshtunnel import SSHTunnelForwarder import MySQLdb with SSHTunnelForwarder( ("SSH接続する踏み台サーバー名", 22), ssh_password='SSH踏み台サーバーのパスワード', ssh_pkey=None, ssh_username="SSH踏み台サーバーのユーザー名", remote_bind_address=("MySQLがあるサーバー名", 3306), local_bind_address=('127.0.0.1', 3306) ) as ssh: con = MySQLdb.connect( host='127.0.0.1', user='dbuser', password="dbpassword", db="データベース名", charset="utf8", port=3306) cur = con.cursor() cur.execute('SELECT * FROM sampletable LIMIT 1') print(cur.fetchone()) con.close()
今回は、python でスクリプト走らせるマシンからSSHサーバーを経由して MySQL のあるサーバーに接続しますが、
SSH サーバーと MySQL のサーバーは同居してますので
MySQLがあるサーバー名は “127.0.0.1” にしてあります