【问题标题】:Python - SSH Tunnel Setup and MySQL DB AccessPython - SSH 隧道设置和 MySQL 数据库访问
【发布时间】:2012-10-10 23:45:24
【问题描述】:

我正在尝试从本地(Windows)连接到我的服务器并访问 MySQL 数据库

使用下面的代码通过 putty 设置 SSH 隧道,我无法访问 MySQL 数据库。

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)

我是否更改了 MySQL 连接字符串设置以使用 paramiko 访问 MySQL DB 如果没有,我需要为 paramiko 添加更多参数来模拟 SSH 隧道设置,如 putty。

【问题讨论】:

    标签: mysql-python paramiko


    【解决方案1】:

    您可以为 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()
    

    【讨论】:

    • 是的,这个有效。如果您使用 id_rsa,只需将 ssh_password 参数替换为 ssh_private_key=PATH_TO_id_rsa
    • 是的!这是另一种选择;)
    • 什么是 mdb ?我有一个错误,上面写着“未定义 mdb”。将其替换为“MySQLdb”(只是猜测)后,我知道有一个错误:File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 202, in execute self.errorhandler(self, exc, value) File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
    • 好的,我明白了——我正在使用 cur 超出“with ..server:”构造的范围! 4 个空格起到了神奇的作用(在 Python 中就像往常一样!)
    • 这个例子是直接为Earnests问题制作的,这就是为什么将它保留为mdb,所以我按照他的样本留下了东西。很高兴你把它整理好了!
    猜你喜欢
    • 2013-02-05
    • 2016-09-08
    • 2017-12-26
    • 1970-01-01
    • 2019-07-15
    • 2021-07-18
    • 2013-08-21
    • 2021-01-25
    • 2014-09-17
    相关资源
    最近更新 更多