Non è stato possibile risolvere l'indirizzo IP di MySQL [avviso]


27

Sto eseguendo MySQL5.6.3 su una macchina virtuale CentOS 6.1 in esecuzione su Windows XP in VirtualBox .

La scheda di rete è configurata in modalità bridge, quindi le mie macchine fisiche e virtuali condividono la stessa scheda Ethernet.

Sulla macchina virtuale, tutto funziona bene: accesso a Internet, ricerche DNS. Tuttavia, le connessioni al demone MySQL richiedono del tempo e i registri continuano a mostrare questo avviso:

[Avvertenza] Impossibile risolvere l'indirizzo IP "192.168.1.201": errore temporaneo nella risoluzione dei nomi

192.168.1.201 è la mia macchina host su cui sto eseguendo il client MySQL.

Sembra che sebbene le ricerche DNS funzionino bene, le ricerche DNS inverse finiscono in un timeout.

Ecco la configurazione della macchina virtuale:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="08:00:27:4B:3D:7C"
NM_CONTROLLED="yes"
ONBOOT="yes"
NETMASK=255.255.255.0
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
PEERDNS=yes

# cat /etc/resolv.conf
nameserver 192.168.1.1

C'è qualcosa di sbagliato nella mia configurazione di rete?


fare riferimento alla mia altra risposta a questa domanda: serverfault.com/a/778161/96578
Amin Sh

Risposte:


49

IMHO Sembra che tu abbia bisogno di mysqld per smettere di usare DNS.

Per favore, procedi come segue: aggiungi questo a /etc/my.cnf

[mysqld]
skip-host-cache
skip-name-resolve

Riavviano mysql. Da quel momento in poi, mysql non risolverà più gli indirizzi tramite DNS.

Provaci !!!

AVVERTIMENTO

Si prega di leggere queste opzioni nella documentazione di MySQL:

Inoltre, esiste una limitazione all'uso di questo: non è possibile utilizzare i nomi DNS nella colonna host di nessuna delle tabelle di concessione.

AGGIORNAMENTO 2012-12-17 08:37 EDT

Recentemente mi è stato chiesto se skip-host-cachee skip-name-resolvepotevo essere impostato senza un riavvio mysql. Scopriamolo:

mysql> show variables like '%host%';
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | ************ |
| report_host   |              |
+---------------+--------------+
2 rows in set (0.00 sec)

mysql> show variables like 'skip_%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| skip_external_locking | ON    |
| skip_name_resolve     | OFF   |
| skip_networking       | OFF   |
| skip_show_database    | OFF   |
+-----------------------+-------+
4 rows in set (0.00 sec)

mysql> set global skip_name_resolve = 1;
ERROR 1238 (HY000): Variable 'skip_name_resolve' is a read only variable
mysql>

Come mostrato, skip-host-cachenon è visibile nell'elenco delle variabili globali. Per quanto riguarda skip_name_resolve, era visibile. Tuttavia, non può essere modificato in modo dinamico perché è una variabile di sola lettura.

Pertanto, skip-host-cachee skip-name-resolvepuò essere modificato solo tramite un riavvio mysql.


Abbiamo qualche problema come effetto della disabilitazione delle ricerche DNS?
Uday

@Un giorno l'unica preoccupazione all'interno di mysql è questa: non è possibile utilizzare un nome DNS in modo efficace nella colonna host di mysql.user. Se ne hai, devi invece sostituirli con l'indirizzo IP pubblico o privato (preferibile).
RolandoMySQLDBA

@RolandoMySQLDBA c'è un modo per aggiungere skip-host-cachee skip-name-resolvesenza riavviare MySql?
Funzionò il

@Ran Siamo spiacenti, la risposta è no. Ho aggiornato la mia risposta per riflettere questo.
RolandoMySQLDBA il

Può esserci qualche problema come la connettività da localhost o qualsiasi altro problema? Sto affrontando un problema per ip243.221.167.124.adsl-pool.sx.cn
Malay M
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.