Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm running MySQL5.6.3 on a CentOS 6.1 virtual machine running on Windows XP in VirtualBox.

The network card is configured in bridge mode, so my physical & virtual machines share the same ethernet card.

On the virtual machine, everything works fine: internet access, DNS lookups. However, connections to the MySQL daemon take a while, and the logs keep showing this warning:

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

192.168.1.201 is my host machine on which I'm runnning the MySQL client.

Looks like although DNS lookups work fine, reverse DNS lookups end up in a timeout.

Here is the virtual machine configuration:

# 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

Is there something wrong in my network configuration?

share|improve this question
add comment

1 Answer 1

up vote 13 down vote accepted

IMHO This sounds like you need mysqld to stop using DNS.

Please do the following: Add this to /etc/my.cnf

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

Them restart mysql. From then on, mysql will no longer resolve addresses via DNS.

Give it a Try !!!

CAVEAT

Please read these options in the MySQL Documentation:

Also, there is one restriction to using this: You cannot use DNS names in the host column of any of the grant tables.

UPDATE 2012-12-17 08:37 EDT

I was recently asked if skip-host-cache and skip-name-resolve could be set without a mysql restart. Let's find out:

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>

As shown, skip-host-cache is not visible in the list of global variables. As for skip_name_resolve, it was visible. However, it cannot changed dynamically because it is a read-only variable.

Therefore, skip-host-cache and skip-name-resolve can only be changed via a mysql restart.

share|improve this answer
    
That works fine, thanks! –  Benjamin Dec 15 '11 at 17:26
    
Do we have any problems as effect of disabling DNS look ups ? –  Uday Jun 19 '12 at 17:49
    
@Uday the only concern within mysql is this: You cannot use a DNS name effectively in the host column of mysql.user. If you have any, you need to replace them with the public or private (preferable) IP address instead. –  RolandoMySQLDBA Jun 19 '12 at 18:01
    
Its clear Ronaldo... Thanks for ur update. –  Uday Jun 19 '12 at 18:23
    
@RolandoMySQLDBA is there a way to add skip-host-cache and skip-name-resolve without restarting MySql? –  Ran Dec 17 '12 at 4:45
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.