O endereço IP do MySQL [Warning] não pôde ser resolvido

26

Estou executando o MySQL5.6.3 em uma máquina virtual CentOS 6.1 em execução no Windows XP em VirtualBox .

A placa de rede é configurada no modo bridge, por isso, meu físico & máquinas virtuais compartilham a mesma placa ethernet.

Na máquina virtual, tudo funciona bem: acesso à internet, pesquisas de DNS. No entanto, as conexões com o daemon do MySQL levam um tempo, e os logs continuam mostrando este aviso:

[Warning] IP address '192.168.1.201' could not be resolved: Temporary failure in name resolution

192.168.1.201 é minha máquina host na qual estou executando o cliente MySQL.

Parece que, embora as pesquisas de DNS funcionem bem, as pesquisas de DNS reversas acabam em um tempo limite.

Aqui está a configuração da máquina virtual:

# 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

Há algo errado na minha configuração de rede?

    
por Benjamin 15.12.2011 / 18:05

1 resposta

48

IMHO Parece que você precisa que o mysqld pare de usar o DNS.

Por favor, faça o seguinte: Adicione isto ao /etc/my.cnf

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

Eles reiniciam o mysql. A partir de então, o mysql não irá mais resolver endereços via DNS.

Experimente!

CAVEAT

Por favor, leia estas opções na documentação do MySQL:

Além disso, há uma restrição para usar isso: você não pode usar nomes DNS na coluna de host de nenhuma das tabelas de permissões.

ATUALIZAÇÃO 2012-12-17 08:37 EDT

Recentemente, perguntaram se skip-host-cache e skip-name-resolve poderiam ser definidos sem uma reinicialização do mysql. Vamos descobrir:

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>

Como mostrado, skip-host-cache não está visível na lista de variáveis globais. Quanto a skip_name_resolve , era visível. No entanto, ele não pode ser alterado dinamicamente porque é uma variável somente leitura.

Portanto, skip-host-cache e skip-name-resolve só podem ser alterados através de uma reinicialização do mysql.

    
por 15.12.2011 / 18:09