繁体   English   中英

用于Python MySQLdb连接的SSH隧道

[英]SSH Tunnel for Python MySQLdb connection

我尝试使用创建SSH隧道

ssh -L 3306:localhost:22 <hostip>

然后运行我的python脚本通过localhost连接

conn = MySQLdb.connect(host'localhost', port=3306, user='bob', passwd='na', db='test')

但是,我收到以下错误

(2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")

我怎样才能确保我找到正确的主机而不仅仅是绑定的一些问题?

尝试将"localhost"更改为"127.0.0.1" ,它应该按预期工作。 手册中详细介绍了此行为:

UNIX套接字和命名管道不能在网络上运行,因此如果指定localhost以外的主机,则将使用TCP,如果需要,可以指定奇数端口(默认端口为3306):

db=_mysql.connect(host="outhouse", port=3307, passwd="moonpie", db="thangs")

如果您真的需要,可以通过指定完整主机名或127.0.0.1连接到具有TCP的本地主机。

mysqld是否在远程端口22上运行? 叫我无知,但我认为你要做的是

ssh -n -N -f -L 3306:localhost:3306 remotehost

然后在本地计算机上建立MySQL连接将透明地通过隧道传输到目标主机。

您不能将localhost指定为主机名,因为这表明MySQLdb应该尝试使用UNIX套接字。 请改用主机127.0.0.1

如果要确保连接正常,可以使用标准的mysql客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM