3

ローカル (Windows) からサーバーに接続し、MySQL DB にアクセスしようとしています

パテを介して SSH トンネルを設定する以下のコードでは、MySQL DB にアクセスできません。

con = None
con = mdb.connect(user='user',passwd='password',db='database',host='127.0.0.1',port=3308)
cur = con.cursor()

以下のコードでは、paramiko を使用して SSH トンネルをセットアップしていますが、成功していますが、MySQL DB に接続できません。

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('host', username='username', password='password')

con = None
con = mdb.connect(user='user',passwd='password',db='database',host='127.0.0.1',port=3308)
cur = con.cursor()

Error:
Error 2003: Can't connect to MySQL server on '127.0.0.1' (10061)

paramiko を使用して MySQL DB にアクセスするように MySQL 接続文字列の設定を変更しましたか?そうでない場合は、paramiko のパラメーターを追加して、パテのような SSH トンネル設定をシミュレートする必要があります。

4

1 に答える 1

6

paramiko に sshtunnel ラッパーを使用すると、頭痛の種から解放されます ;)

from sshtunnel import SSHTunnelForwarder
import MySQLdb

with SSHTunnelForwarder(
         ('host', 22),
         ssh_password="password",
         ssh_username="username",
         remote_bind_address=('127.0.0.1', 3308)) as server:

    con = None
    con = mdb.connect(user='user',passwd='password',db='database',host='127.0.0.1',port=server.local_bind_port)
    cur = con.cursor()
于 2015-07-26T16:13:53.953 に答える