簡體   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