用于Python MySQLdb连接的SSH隧道

Joh*_*tta 19 python mysql ssh

我尝试使用创建SSH隧道

ssh -L 3306:localhost:22 <hostip>
Run Code Online (Sandbox Code Playgroud)

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

conn = MySQLdb.connect(host'localhost', port=3306, user='bob', passwd='na', db='test')
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误

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

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

Tar*_*ula 17

尝试改变"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的本地主机 .


Nov*_*kov 13

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

ssh -n -N -f -L 3306:localhost:3306 remotehost
Run Code Online (Sandbox Code Playgroud)

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