后来在网上发现解决方法,myini里面添加
[mysqld]
skip-name-resolve
这样速度就快了!
skip-name-resolve
选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
就MySQL本身而言,问题出在在mysql dns反解析
mysql>show processlist;
| 20681949 | unauthenticated user | 10104193:52497 | NULL | Connect | | Reading from net | NULL |
| 20681948 | unauthenticated user | 10104193:52495 | NULL | Connect | | Reading from net | NULL
发现有非常多的 unauthenticated user 尝试做登入使用 mysql 的情况 ,当这种情况无限制发生时就会造成系统十分缓慢。
查阅mysql官方网站得知,这属于官方一个系统上的特殊设定,就把他当成mysql的一个bug算了,不管链接的的方式是经过 hosts 或是 IP 的模式,他都会对 DNS 做反查。mysqld 会尝试去反查 IP -> dns ,由于反查解析过慢,就会无法应付过量的查询。
mysql的root账户,我在连接时通常用的是localhost或127001,公司的测试服务器上的mysql也是localhost所以我想访问无法访问,测试暂停
解决方法:
1,修改表,登录mysql数据库,切换到mysql数据库,使用sql语句查看"select host,user from user ;"
mysql -u root -pvmwaremysqluse mysql;
mysqlupdate user set host = '%' where user ='root';
mysqlselect host, user from user;
mysqlflush privileges;注意:最后一句很重要,目的是使修改生效如果没有写,则还是不能进行远程连接
2,授权用户,你想root使用密码从任何主机连接到mysql服务器
GRANT ALL PRIVILEGES ON TO 'root'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
flush privileges;
如果你想允许用户root从ip为1921681104的主机连接到mysql服务器
以上就是关于访问外网的mysql数据库比较慢是怎么解决全部的内容,包括:访问外网的mysql数据库比较慢是怎么解决、如何设置mysql允许外网访问、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)