远程连接到MySQL服务器需要很长时间

我在我的Linux笔记本上运行一个MySQL 5.0.75服务器,我想从本地networking中的另一台计算机连接到该服务器。

这个连接需要5-6秒钟:

mysql -h 172.22.65.101 -u myuser -p123 

一个ping到MySQL主机:

 PING 172.22.65.101 (172.22.65.101) 56(84) bytes of data. 64 bytes from 172.22.65.101: icmp_seq=1 ttl=64 time=0.799 ms 64 bytes from 172.22.65.101: icmp_seq=2 ttl=64 time=0.000 ms 64 bytes from 172.22.65.101: icmp_seq=3 ttl=64 time=6.43 ms 64 bytes from 172.22.65.101: icmp_seq=4 ttl=64 time=0.000 ms 64 bytes from 172.22.65.101: icmp_seq=5 ttl=64 time=3.81 ms 64 bytes from 172.22.65.101: icmp_seq=6 ttl=64 time=0.706 ms ^C --- 172.22.65.101 ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 5027ms rtt min/avg/max/mdev = 0.000/1.959/6.437/2.383 ms 

有任何想法吗? 当我监视SHOW PROCESSLIST的连接时, 在MySQL主机上,我可以看到命令是“connect”,用户是“未经validation的用户”。 这持续到连接build立。 (用户然后显示为“myuser”,命令是“睡眠”)

我是一名开发人员,需要你如何find瓶颈的build议!

我的主机my.cnf:

 [client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp key_buffer = 16M max_allowed_packet = 16M thread_stack = 128K thread_cache_size = 8 myisam-recover = BACKUP query_cache_limit = 1M query_cache_size = 16M expire_logs_days = 10 max_binlog_size = 100M skip-federated [mysqldump] quick quote-names max_allowed_packet = 16M [isamchk] key_buffer = 16M 

客户:

 mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2 

服务器:

 mysql Ver 14.12 Distrib 5.0.75, for debian-linux-gnu (i486) using readline 5.2 

可能您在尝试检索和validation连接主机的反向DNS方面落后了。 您可以通过在服务器的my.cnf [mysqld]部分打开skip_name_resolve来testing。

如果实际情况(通过消除延迟的参数certificate),则可以通过为客户端正确设置DNS(正向和反向)或通过skip_name_resolve运行skip_name_resolve来解决此问题(这意味着您不能在您的GRANT表中使用主机名)。