MySQL [Warnung] IP-Adresse konnte nicht aufgelöst werden


27

Ich führe MySQL5.6.3 auf einer virtuellen CentOS 6.1-Maschine aus, die unter Windows XP in VirtualBox ausgeführt wird .

Die Netzwerkkarte ist im Bridge-Modus konfiguriert, sodass meine physischen und virtuellen Maschinen dieselbe Ethernet-Karte verwenden.

Auf der virtuellen Maschine funktioniert alles einwandfrei: Internetzugang, DNS-Lookups. Es dauert jedoch eine Weile, bis Verbindungen zum MySQL-Dämon hergestellt sind, und in den Protokollen wird weiterhin folgende Warnung angezeigt:

[Warnung] IP-Adresse '192.168.1.201' konnte nicht aufgelöst werden: Temporärer Fehler bei der Namensauflösung

192.168.1.201 ist mein Hostrechner, auf dem ich den MySQL-Client starte.

Obwohl DNS-Suchvorgänge problemlos funktionieren, kommt es bei umgekehrten DNS-Suchvorgängen zu einer Zeitüberschreitung.

Hier ist die Konfiguration der virtuellen Maschine:

# 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

Stimmt etwas in meiner Netzwerkkonfiguration nicht?


Antworten:


49

IMHO Das hört sich so an, als ob Sie mysqld brauchen, um DNS nicht mehr zu verwenden.

Bitte machen Sie folgendes: Fügen Sie dies zu /etc/my.cnf hinzu

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

Sie starten MySQL neu. Ab diesem Zeitpunkt löst mysql keine Adressen mehr über DNS auf.

Versuche es !!!

VORBEHALT

Bitte lesen Sie diese Optionen in der MySQL-Dokumentation:

Es gibt auch eine Einschränkung bei der Verwendung: Sie können keine DNS-Namen in der Host-Spalte einer der Grant-Tabellen verwenden.

UPDATE 2012-12-17 08:37 EDT

Ich wurde kürzlich gefragt, ob skip-host-cacheund skip-name-resolvekönnte ohne einen Neustart von MySQL eingestellt werden. Lass es uns herausfinden:

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>

Wie gezeigt, skip-host-cacheist in der Liste der globalen Variablen nicht sichtbar. Was skip_name_resolvewar es sichtbar. Es kann jedoch nicht dynamisch geändert werden, da es sich um eine schreibgeschützte Variable handelt.

Daher skip-host-cacheund skip-name-resolvekann nur über einen MySQL-Neustart geändert werden.


Haben wir Probleme beim Deaktivieren der DNS-Suche?
— Uday

@Uday das einzige Problem in MySQL ist: Sie können einen DNS-Namen nicht effektiv in der Host-Spalte von verwenden mysql.user. Wenn Sie welche haben, müssen Sie diese stattdessen durch die öffentliche oder private (bevorzugte) IP-Adresse ersetzen.
— RolandoMySQLDBA

@RolandoMySQLDBA gibt es eine Möglichkeit zum Hinzufügen skip-host-cacheund skip-name-resolveohne Neustart von MySQL?
— Ran

@Ran Entschuldigung, die Antwort ist nein. Ich habe meine Antwort aktualisiert, um dies widerzuspiegeln.
— RolandoMySQLDBA

Kann es ein mögliches Problem wie die Konnektivität von localhost oder ein anderes Problem geben? Ich stehe vor einem Problem für die IP243.221.167.124.adsl-pool.sx.cn
— Malay M
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.