我尝试使用
创建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)")
如何确保我能够使用正确的主机,而不仅仅是绑定问题?
答案 0 :(得分:17)
尝试将"localhost"
更改为"127.0.0.1"
,它应该按预期工作。 manual:
UNIX套接字和命名管道没有 通过网络工作,所以如果你指定 TCP将会是localhost以外的主机 使用,你可以指定一个奇数 如果需要端口(默认端口 是3306):
db=_mysql.connect(host="outhouse", port=3307, passwd="moonpie", db="thangs")
如果你真的不得不,你可以 使用TCP连接到本地主机 指定完整的主机名,或 的 127.0.0.1 强>
答案 1 :(得分:13)
mysqld是否在远程端口22上运行?叫我无知,但我认为你要做的是
ssh -n -N -f -L 3306:localhost:3306 remotehost
然后在本地计算机上建立MySQL连接将透明地通过隧道传输到目标主机。
答案 2 :(得分:3)
您不能将localhost
指定为主机名,因为这表明MySQLdb应该尝试使用UNIX套接字。请改为使用127.0.0.1
作为主机。
如果要确保连接正常,可以使用标准的mysql客户端。