服务器放在局域网内进行测试时,数据库的访问速度仍是很快。但当服务器放到外网后,数据库的访问速度就变得很是慢。mysql
后来在网上发现解决方法,my.cnf里面添加linux
[mysqld]
skip-name-resolvesql
这样速度就快了!数据库
skip-name-resolvewindows
选项就能禁用DNS解析,链接速度会快不少。不过,这样的话就不能在MySQL的受权表中使用主机名了而只能用ip格式。服务器
还有权限的问题,当用户设置限制只能访问某个数据库,若是这个数据库被删了,再重建这个指定数据库,限制用户仍是不能访问这个数据,大概是删除数据库的时间,把该用户的访问权限也级联删除了,详细能够查看mysql.db的记录网络
若使用–skip-grant-tables系统将对任何用户的访问不作任何访问控制,但能够用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认状况是show databases语句对全部用户开放。测试
若是mysql服务器没有开远程账户,就在my.cnf里面加上skip-grant-tables网站
排除网络问题。spa
就MySQL自己而言,问题出在在mysql dns反解析
mysql>show processlist;
| 20681949 | unauthenticated user | 10.10.4.193:52497 | NULL | Connect | | Reading from net | NULL |
| 20681948 | unauthenticated user | 10.10.4.193:52495 | NULL | Connect | | Reading from net | NULL
发现有很是多的 unauthenticated user 尝试作登入使用 mysql 的情況 ,当这种状况无限制发生时就会形成系统十分缓慢。
查阅mysql官方网站得知,这属于官方一个系统上的特殊设定,就把他当成mysql的一个bug算了,无论连接的的方式是通过 hosts 或是 IP 的模式,他都会对 DNS 作反查。mysqld 会尝试去反查 IP -> dns ,因为反查解析过慢,就会没法应付过量的查询。
解决办法:
/usr/local/mysql/bin/mysqld_safe --skip-name-resolve --user=mysql&
加 --skip-name-resolve 这么一个参数就能够,关闭mysql的dns反查功能。
或者修改mysql配置文件。
编辑/etc/my.cnf
在[mysqld]段中加入
skip-name-resolve
重启mysql
在/etc/my.cnf 的配置文件中加入以下一句,禁用DNS反响解析,就能大大加快MySQL链接的速度。
[mysqld]
下面加上这句
skip-name-resolve
#注意有些文章中写道加入–skip-name-resolve,经验证,在CentOS5下加入–skip-name-resolve会致使mysql守护进程没法启动。估计在其余linux系统下是同样的,windows下没有测试,skip-name-resolve应该就能够。