2011-07-12 13 views
8

Sanal makinemden bir etki alanındaki veritabanına bağlanmayı deniyorum. O ile bırakması Win7 ve çalışmıyor nedense XP üzerinde çalışır, ancak: "OperationalError: (1042, 'senin adresi için hostname alınamıyor')"Python için MySQLdb kullanırken atlama adı-adı çözüm seçeneği nasıl kullanılır?

Şimdi devre dışı Firewall ve malzeme çalıştı, ancak bu zaten farketmez. Her şeyi yavaşlatacak DNS çözümlemesine ihtiyacım yok. Yani "atlama-adı-çözüm" seçeneğini kullanmak istiyorum, ama MySQLdb for Python kullanırken my.ini veya my.cnf yok, bu seçeneği hala nasıl kullanabilirim? Yardımlarınız Alex

cevap

1

Bu için

sayesinde sunucuda MySQL yapılandırma dosyasında belirlenen gereken bir seçenektir. MySQLdb gibi istemci API'leri tarafından ayarlanamaz. Bunun nedeni potansiyel güvenlik etkileridir.

Belirli bir ana bilgisayar adından erişimi reddetmek isteyebilirim. skip-name-resolve etkinken, bu çalışmaz. (Kuşkusuz, ana makine üzerinden erişim kontrolü yine muhtemelen en iyi bir fikir değildir.)

+0

IP kullanıp, ana makine adına göre bunu yapmak için hatayı alıyorum. Ancak MySQLdb daha sonra istemci API'sidir, Python Sunucusu'dur. O ayarları nerede yapabilirim biliyor musun? Örneğin MySQL servisi yok, hepsi python paketinde. – CreeTar

+0

MySQLdb bir MySQL sunucusu değil, bir istemci API'sidir. Bağlanmak için hala bir MySQL sunucusuna ihtiyacınız var. –

+0

iyi, bu zaten benim sorunum için önemli değil çünkü bir IP kullanırken bile bu hatayı alıyorum. – CreeTar

27

/etc/mysql/my.cnf dosyasında aşağıdaki satırı (skip-adı-çözmek) ekleyin

[mysqld] 
port = 3306 
socket = /tmp/mysql.sock 
skip-locking 
skip-name-resolve 

Ve mysql sunucusunu yeniden başlatın

+2

Sanırım "atlama-kilitleme" artık "atlama-harici-kilitleme" işleviydi. –

+1

Evet, 'skip-external-locking' ve' skip-name-resol' ekleyin ve kötü bir zamanınız olacak. –

+2

@OrlandoLeite ne demek istiyorsun? – AldoB