2010-08-26 23 views
17
Ben

SSH Tünel Python için MySQLdb bağlantısı

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

Ancak localhost üzerinden bağlanmak için Sonra benim python komut çalıştıran

ssh -L 3306:localhost:22 <hostip> 

kullanarak bir SSH tüneli oluşturma çalıştı

, aşağıdaki hatayı alırsınız

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

Doğru konakçıya bindiğimden ve bağla ilgili bir sorundan değil, nasıl emin olabilirim?

cevap

16

'u "127.0.0.1" olarak değiştirmeyi deneyin, beklediğiniz gibi çalışmalıdır. Bu davranış manual ayrıntılı olarak: Eğer localhost dışında bir konak belirtmek eğer öyleyse

UNIX prizler ve adlandırılmış yöneltme, bir ağ üzerinden işi yok, TCP kullanılacak olacak ve bir belirtebilirsiniz garip portu (varsayılan portu olan 3306) gerekirse: Eğer gerçekten olsaydı

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

, sen tarafından TCP ile yerel ana bilgisayara bağlanabilir 10 tam ana bilgisayar adını veya 127.0.0.1'u belirtin.

+1

Bunu yaptı. Teşekkürler –

3

Ana bilgisayar adı olarak localhost belirtemezsiniz, bu da MySQLdb'nin bir UNIX soketi kullanmayı denemesi gerektiğini gösterir. Ana bilgisayar için 127.0.0.1 kullanın.

Bağlantının çalıştığından emin olmak istiyorsanız, standart mysql istemcisini kullanabilirsiniz.

11

Mysqld, uzaktan kumandadaki 22 numaralı bağlantı noktasında mı çalışıyor? cahil beni arayın ama ne yapmaya çalışıyoruz Sonra yerel makinede MySQL bağlantılar şeffaf hedef ana bilgisayara üzerinde tünel alacak hale

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

olduğunu düşünüyorum.

+0

Evet ve yerel ana bilgisayarda bir telnet istemciniz varsa bunu test edebilirsiniz: 'telnet localhost 3306' bir bağlantı kurmalı ve tanınabilir bir MySQL sürüm numarası göstermelidir. –

+0

Yanlış bağlantı noktasını aldığımı varsayıyor olmalısınız. –

+0

Bu cevabın seçilenlerden daha iyi olduğunu düşünüyorum, çünkü önerilen yol uzaktaki yerine yerel makinenizde kalmayı mümkün kılıyor. –