Nie można rozwiązać adresu IP MySQL [Ostrzeżenie]

27

Używam MySQL5.6.3 na maszynie wirtualnej CentOS 6.1 działającej w systemie Windows XP w VirtualBox .

Karta sieciowa jest skonfigurowana w trybie mostka, więc moje fizyczne i wirtualne maszyny współużytkują tę samą kartę Ethernet.

Na maszynie wirtualnej wszystko działa dobrze: dostęp do Internetu, wyszukiwania DNS. Jednak połączenia z demonem MySQL trwają chwilę, a dzienniki wciąż wyświetlają to ostrzeżenie:

[Ostrzeżenie] Nie można rozwiązać adresu IP „192.168.1.201”: Tymczasowy błąd w rozpoznawaniu nazw

192.168.1.201 to moja maszyna hosta, na której uruchamiam klienta MySQL.

Wygląda na to, że chociaż wyszukiwania DNS działają poprawnie, odwrotne wyszukiwania DNS kończą się przekroczeniem limitu czasu.

Oto konfiguracja maszyny wirtualnej:

# 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

Czy coś jest nie tak z moją konfiguracją sieci?

Benzoes
źródło
odsyłam do mojej innej odpowiedzi na to pytanie: serverfault.com/a/778161/96578
Amin Sh

Odpowiedzi:

49

IMHO Wygląda na to, że potrzebujesz mysqld, aby przestać używać DNS.

Wykonaj następujące czynności: Dodaj to do /etc/my.cnf

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

Uruchom ponownie mysql. Od tego momentu mysql nie będzie już rozpoznawał adresów przez DNS.

Spróbuj !!!

CAVEAT

Przeczytaj następujące opcje w dokumentacji MySQL:

Jest też jedno ograniczenie korzystania z tego: Nie można używać nazw DNS w kolumnie hosta żadnej z tabel grantu.

AKTUALIZACJA 17.12.2012 08:37 EDT

Byłem niedawno pytanie, czy skip-host-cachei skip-name-resolvemoże być ustawiony bez restartu mysql. Dowiedzmy Się:

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>

Jak pokazano, skip-host-cachenie jest widoczny na liście zmiennych globalnych. Co do skip_name_resolvetego było widoczne. Nie można go jednak zmieniać dynamicznie, ponieważ jest to zmienna tylko do odczytu.

Dlatego skip-host-cachei skip-name-resolvemożna go zmienić tylko poprzez ponowne uruchomienie mysql.

RolandoMySQLDBA
źródło
Czy mamy problemy z wyłączeniem wyszukiwania DNS?
Uday
@Uday jedynym problemem w mysql jest to: Nie można skutecznie używać nazwy DNS w kolumnie hosta mysql.user. Jeśli tak, musisz zastąpić je publicznym lub prywatnym (preferowanym) adresem IP.
RolandoMySQLDBA
@RolandoMySQLDBA jest sposób na dodanie skip-host-cachei skip-name-resolvebez ponownego uruchamiania MySql?
Ran,
@Ran Przepraszamy, odpowiedź brzmi nie. Zaktualizowałem swoją odpowiedź, aby to odzwierciedlić.
RolandoMySQLDBA,
Czy może istnieć jakikolwiek problem, taki jak łączność z hostem lokalnym lub inny problem? Mam problem z ip243.221.167.124.adsl-pool.sx.cn
malajski M