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.