通过SSH连接MySQL数据库

Man*_*tis 6 python sqlalchemy paramiko

我试图通过SSH将我的python程序连接到远程MySQL数据库.

我正在使用Paramiko用于SSH和SQLAlchemy.

这是我到目前为止:

import paramiko
from sqlalchemy import create_engine

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

engine = create_engine('mysql+mysqldb://user:pass@host/db')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2003, "Can't connect to MySQL server on 'mcsdev.croft-it.com' (60)")
Run Code Online (Sandbox Code Playgroud)

jsj*_*sjc 12

对不起,我之前发过了一个重复的答案.以下是针对您的问题量身定制的更详细的答案;)

如果您仍然需要通过SSH连接到远程MySQL数据库,我使用了一个名为sshtunnel的库,它包装和简化了paramiko(sshtunnel的依赖项)的使用.

有了这段代码,我觉得你会很高兴:

from sshtunnel import SSHTunnelForwarder
from sqlalchemy import create_engine

server =  SSHTunnelForwarder(
     ('host', 22),
     ssh_password="password",
     ssh_username="username",
     remote_bind_address=('127.0.0.1', 3306))

server.start()

engine = create_engine('mysql+mysqldb://user:pass@127.0.0.1:%s/db' % server.local_bind_port)

# DO YOUR THINGS

server.stop()
Run Code Online (Sandbox Code Playgroud)