2011-07-12 12 views
8

Provo a connettermi al database in un dominio dalla mia macchina virtuale. Funziona su XP, ma in qualche modo non funziona su Win7 e smettere con: "OperationalError: (1042, 'Impossibile ottenere il nome host per il vostro indirizzo')"Come usare l'opzione skip-name-resolve quando si usa MySQLdb per Python?

Ora ho cercato disabilitare Firewall e roba, ma che non importa comunque. Non ho bisogno della risoluzione DNS, che rallenterà solo tutto. Quindi voglio usare l'opzione "skip-name-resolve", ma non c'è my.ini o my.cnf quando si usa MySQLdb per Python, quindi come posso usare ancora questa opzione?

Grazie per il vostro aiuto -Alex

risposta

1

Questa è un'opzione che deve essere impostata nel file di configurazione di MySQL sul server. Non può essere impostato dalle API client come MySQLdb. Questo è a causa delle potenziali implicazioni sulla sicurezza.

Cioè, potrei voler negare l'accesso da un particolare nome host. Con skip-name-resolve abilitato, questo non funzionerà. (Certo, il controllo di accesso tramite nome host non è probabilmente la migliore idea comunque.)

+0

Ho usato IP e ancora ottengo l'errore se intendi questo per nome host. Ma MySQLdb è più che l'API client, è il server per Python. Sai dove posso fare quelle impostazioni allora? Per esempio, non esiste un servizio MySQL, è tutto nel pacchetto python. – CreeTar

+0

MySQLdb non è un server MySQL, è un'API client. Hai ancora bisogno di un server MySQL per la connessione. –

+0

beh, questo non ha importanza per il mio problema comunque, perché ottengo questo errore anche quando si usa un IP. – CreeTar

27

Aggiungere la seguente riga (salta-name-resolve) nel file /etc/mysql/my.cnf

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

E riavviare il server mysql

+2

Penso che 'skip-locking' sia ora' skip-external-locking' –

+1

Sì, aggiungi 'skip-external-locking' e' skip-name-resolve' e avrete un brutto momento. –

+2

@OrlandoLeite cosa intendi? – AldoB