python3でSSHトンネル経由でMySQLへの接続する

Pocket

最近、業務でも python3 を書くことが多くなってきました

MySQL というか、MariaDB との連携も多くなり・・・。
ただし、業務上 MySQL のポートは開放したくないので SSH 経由で接続を調べました

簡単なコードは下記の通り

</p>
<p>#!/usr/bin/env python3<br />
# -*- encoding: utf-8 -*-<br />
from sshtunnel import SSHTunnelForwarder<br />
import MySQLdb<br />
with SSHTunnelForwarder(<br />
    (&quot;SSH接続する踏み台サーバー名&quot;, 22),<br />
    ssh_password='SSH踏み台サーバーのパスワード',<br />
    ssh_pkey=None,<br />
    ssh_username=&quot;SSH踏み台サーバーのユーザー名&quot;,<br />
    remote_bind_address=(&quot;MySQLがあるサーバー名&quot;, 3306),<br />
    local_bind_address=('127.0.0.1', 3306)<br />
    ) as ssh:<br />
    con = MySQLdb.connect(<br />
        host='127.0.0.1', user='dbuser', password=&quot;dbpassword&quot;, db=&quot;データベース名&quot;, charset=&quot;utf8&quot;, port=3306)<br />
    cur = con.cursor()<br />
    cur.execute('SELECT * FROM sampletable LIMIT 1')<br />
    print(cur.fetchone())<br />
    con.close()<br />

今回は、python でスクリプト走らせるマシンからSSHサーバーを経由して MySQL のあるサーバーに接続しますが、
SSH サーバーと MySQL のサーバーは同居してますので
MySQLがあるサーバー名は “127.0.0.1” にしてあります

コメントを残す