sc_*_*ric 5 python mysql ssh mysql-python
我试图通过python中的ssh连接到mysql数据库,但是收到错误.我在python文件'forward.py'中保存了以下内容.我的代码如下:
forward.py
from sshtunnel import SSHTunnelForwarder
import MySQLdb
with SSHTunnelForwarder(
('ssh_host', 22),
ssh_password="ssh_password",
ssh_username="ssh_username",
remote_bind_address=('mysql_host', 3306)) as server:
con = MySQLdb.connect(user='mysql_username',passwd='mysql_password',db='mysql_db_name',host='mysql_host',port=server.local_bind_port)
Run Code Online (Sandbox Code Playgroud)
当我在终端中运行forward.py时,收到以下错误:
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on
'mysql_host' (60)")
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这些值是安全性的硬编码值,即'mysql_host'是一个实际的主机,当我运行时我可以ssh到很好
ssh mysql_host
Run Code Online (Sandbox Code Playgroud)
通过终端.我也可以使用相同的值使用Sequel Pro进行连接,如下:http://screencast.com/t/0niuWlMDb
谁能指出我正确的方向?提前致谢
小智 5
我认为您的问题在于您正在创建本地 SSH 隧道,但尝试直接连接到远程主机,这违背了使用 SSH 隧道的目的。
我相信,如果您将连接字符串更改为 ,host='mysql_host'您host='127.0.0.1'就会解决您的问题。
如果您查看 Sequel Pro 实例的调试/连接设置,您将看到正在使用的实际连接命令,并且应该有望确认情况确实如此。
有关 SSH 转发的更多参考资料: http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html
| 归档时间: |
|
| 查看次数: |
5247 次 |
| 最近记录: |