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

Pocket

最近、業務でも 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” にしてあります

コメントを残す