mysql远程连接很慢一般是my.cnf中的skip-name-resolve没有配置好了,我们只要简单配置一下就可以了,下面我把我解决办法分享给各位.
今天由于偶然登录mysql服务器(mysql服务器装有phpmyadmin)查看进程(SHOW PROCESSLIST),我了个去,大量未被认证用户连接mysql,进程结果如下:
|13|unauthenticated user|10.135.26.100:42345|NULL|Connect| |login|NULL|
|14|unauthenticated user|10.135.26.100:42346|NULL|Connect| |login|NULL|
|15|unauthenticated user|10.135.26.100:42349|NULL|Connect| |login|NULL|
我了个去,这是虾米情况呢?问了百度谷歌,原因为: MYSQL开启了DNS的反向解析,貌似默认安装就会出现这东东。问题找到,自然问题也就迎刃而解。
1.在启动参数中添加--skip-name-resolve,关闭反向域名解析功能
2.在my.cnf的[mysqld]一节中增加skip-name-resolve
3.在/etc/hosts文件中添加对应的host记录
为方便起见,直接采用方案2,在mysql配置文件my.cnf中f的[mysqld]一节中增加skip-name-resolve。选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
若使用–skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放,
如果mysql服务器没有开远程帐户,就在my.cnf里面加上skip-grant-tables。
在linux下配置文件是/etc/my.cnf,在windows下配置文件是mysql安装目录下的my.ini文件。注意该配置是加在 [mysqld]下面,在更改配置并保存后,然后重启mysql并远程连接测试,一切恢复如初。该参数的官方解释信息如下:
mysql主机查询DNS很慢或是有很多客户端主机时会导致连接很慢,由于我们的开发机器是不能够连接外网的,所以DNS解析是不可能完成的,从而也就明白了为什么连接那么慢了。同时,请注意在增加该配置参数后,mysql的授权表中的host字段就不能够使用域名而只能够使用 ip地址了,因为这是禁止了域名解析的结果