Não foi possível resolver o endereço IP do [Aviso] do MySQL

27

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

A placa de rede está configurada no modo bridge, então minhas máquinas físicas e 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 MySQL demoram um pouco e os logs continuam mostrando este aviso:

[Aviso] O endereço IP '192.168.1.201' não pôde ser resolvido: falha temporária na resolução de nomes

192.168.1.201 é a 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 terminam com o 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 de errado na minha configuração de rede?

Benjamin
fonte
referem-se a minha resposta outra para esta pergunta: serverfault.com/a/778161/96578
Amin Sh

Respostas:

49

IMHO Parece que você precisa do mysqld para parar de usar o DNS.

Faça o seguinte: Adicione isso ao /etc/my.cnf

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

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

De uma chance !!!

EMBARGO

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 host de nenhuma das tabelas de concessão.

UPDATE 2012-12-17 08:37 EDT

Recentemente, fui perguntado se skip-host-cachee skip-name-resolvepoderia ser definido 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-cachenão está visível na lista de variáveis ​​globais. Quanto a skip_name_resolveisso, era visível. No entanto, ele não pode ser alterado dinamicamente porque é uma variável somente leitura.

Portanto, skip-host-cachee skip-name-resolvesó pode ser alterado através de uma reinicialização do mysql.

RolandoMySQLDBA
fonte
Temos algum problema como efeito de desativar as pesquisas de DNS?
Uday
@ A única preocupação no mysql é a seguinte: Você não pode usar um nome DNS efetivamente na coluna host de mysql.user. Se você tiver algum, precisará substituí-lo pelo endereço IP público ou privado (preferível).
RolandoMySQLDBA
@RolandoMySQLDBA existe uma maneira de adicionar skip-host-cachee skip-name-resolvesem reiniciar o MySql?
Ran
@Ran Desculpe, a resposta é não. Eu atualizei minha resposta para refletir isso.
RolandoMySQLDBA
Pode haver algum problema possível, como a conectividade do host local ou qualquer outro problema? Estou enfrentando problema para o ip #243.221.167.124.adsl-pool.sx.cn
M malaio