L'adresse IP de MySQL [Avertissement] n'a pas pu être résolue

27

J'exécute MySQL5.6.3 sur une machine virtuelle CentOS 6.1 fonctionnant sous Windows XP dans VirtualBox .

La carte réseau est configurée en mode pont, donc mes machines physiques et virtuelles partagent la même carte Ethernet.

Sur la machine virtuelle, tout fonctionne bien: accès Internet, recherches DNS. Cependant, les connexions au démon MySQL prennent du temps et les journaux continuent d'afficher cet avertissement:

[Avertissement] L'adresse IP '192.168.1.201' n'a pas pu être résolue: échec temporaire dans la résolution de nom

192.168.1.201 est ma machine hôte sur laquelle j'exécute le client MySQL.

Il semble que même si les recherches DNS fonctionnent correctement, les recherches DNS inversées se retrouvent dans un délai d'attente.

Voici la configuration de la machine virtuelle:

# 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

Y a-t-il un problème dans la configuration de mon réseau?

Benjoin
la source
reportez-vous à ma autre réponse à cette question: serverfault.com/a/778161/96578
Amin Sh

Réponses:

49

À mon humble avis, il semble que vous ayez besoin de mysqld pour arrêter d'utiliser DNS.

Veuillez faire ce qui suit: Ajoutez ceci à /etc/my.cnf

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

Redémarrez mysql. À partir de là, mysql ne résoudra plus les adresses via DNS.

Essaie !!!

CAVEAT

Veuillez lire ces options dans la documentation MySQL:

En outre, il existe une restriction à l'utilisation de ceci: vous ne pouvez pas utiliser de noms DNS dans la colonne hôte des tables d'octroi.

MISE À JOUR 2012-12-17 08:37 EDT

On m'a récemment demandé si skip-host-cacheet skip-name-resolvepouvait être défini sans redémarrage mysql. Découvrons-le:

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>

Comme indiqué, skip-host-cachen'est pas visible dans la liste des variables globales. Quant à skip_name_resolve, il était visible. Cependant, il ne peut pas être modifié dynamiquement car il s'agit d'une variable en lecture seule.

Par conséquent, skip-host-cacheet skip-name-resolvene peut être modifié que via un redémarrage mysql.

RolandoMySQLDBA
la source
Avons-nous des problèmes pour désactiver la recherche DNS?
Uday
@Uday la seule préoccupation dans mysql est la suivante: vous ne pouvez pas utiliser un nom DNS efficacement dans la colonne hôte de mysql.user. Si vous en avez, vous devez les remplacer par l'adresse IP publique ou privée (préférable) à la place.
RolandoMySQLDBA
@RolandoMySQLDBA est-il possible d'ajouter skip-host-cacheet skip-name-resolvesans redémarrer MySql?
Ran
@Ran Désolé, la réponse est non. J'ai mis à jour ma réponse pour refléter cela.
RolandoMySQLDBA
Peut-il y avoir un problème possible comme la connectivité de l' hôte local ou tout autre problème? J'ai un problème pour ip243.221.167.124.adsl-pool.sx.cn
Malay M