服务器放在局域网内进行测试时,数据库的访问速度还是很快。但当服务器放到外网后,数据库的访问速度就变得非常慢。

后来在网上发现解决方法,my.cnf里面添加

[mysqld]
skip-name-resolve

这样速度就快了!

skip-name-resolve

选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。

还有权限的问题,当用户设置限制只能访问某个数据库,如果这个数据库被删了,再重建这个指定数据库,限制用户还是不能访问这个数据,大概是删除数据库的时间,把该用户的访问权限也级联删除了,详细可以查看mysql.db的记录

若使用–skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放。

如果mysql服务器没有开远程帐户,就在my.cnf里面加上skip-grant-tables

排除网络问题。

就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应该就可以。

**************************************

下面是其它网友的补充:

问题现象是这样的:

我在一台机器上(61.183.23.23)启动了一个mysql,然后开通一个账号可以从127.0.0.1或者从61.183.23.23访问。但是遇到一个问题就是使用下面两个命令行访问的时候,速度差别非常大:

mysql –h 127.0.0.1 –u user
mysql –h 61.183.23.23 –u user

然后我使用ping,判断两个IP的速度差不多。

使用127.0.0.1的IP速度比另一个快太多了。虽然说这里的61.183.23.23需要去外网走一圈,但是速度差别怎么会差这么多。

解决办法:

mysql使用skip-name-resolve禁止掉DNS的查询。
mysql会在用户登录过程中对客户端IP进行DNS反查,不管你是使用IP登录还是域名登录,这个反查的过程都是在的。所以如果你的mysql所在的服务器的DNS有问题或者质量不好,那么就有可能造成我遇到的这个问题,DNS解析出现问题。

修改mysql配置文件

[mysqld]
skip-name-resolve

补充:

做个提醒,增加skip-name-resolve有可能导致账号失效,比如我原先的账号是yejianfeng@localhost,然后其实我使用mysql -h127.0.0.1 -uyejianfeng 是可以登录的。但是一旦加上了skip-name-resolve,就不能登录的了。需要加上账号yejianfeng@127.0.0.1

本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/2057106

MySQL在远程访问时非常慢的解决skip-name-resolve相关推荐

  1. mysql编写中文时变成问号解决方法

    mysql编写中文时变成问号解决方法 参考文章: (1)mysql编写中文时变成问号解决方法 (2)https://www.cnblogs.com/yangzhixue/p/11449525.html ...

  2. centos下MySQL Workbench连接时崩溃的解决方法

    centos下MySQL Workbench连接时崩溃的解决方法 参考文章: (1)centos下MySQL Workbench连接时崩溃的解决方法 (2)https://www.cnblogs.co ...

  3. mysql主从配置时Slave_IO_Running: Connecting解决

    主从同步时出现错误:Slave_IO_Running: Connecting mysql> show slave status\G; *************************** 1. ...

  4. MySQL删除数据库时无响应解决办法

    今天在删除远程主机上MySQL中的一个数据库时,遇到了这样一个问题. 执行drop database语句的时候,远程主机一直在响应,无法正常删除.登录到远程主机上删除也无响应. 这个问题的解决办法如下 ...

  5. 解决MySQL导入数据时遇到secure-file-priv的问题

    解决MySQL导入数据时遇到secure-file-priv的问题 参考文章: (1)解决MySQL导入数据时遇到secure-file-priv的问题 (2)https://www.cnblogs. ...

  6. MySQL 插入数据时,中文乱码问题的解决

    MySQL 插入数据时,中文乱码问题的解决 参考文章: (1)MySQL 插入数据时,中文乱码问题的解决 (2)https://www.cnblogs.com/sunzn/archive/2013/0 ...

  7. mysql导入数据表越来越慢,快速解决mysql导数据时,格式不对、导入慢、丢数据的问题...

    快速解决mysql导数据时,格式不对.导入慢.丢数据的问题 如果希望一劳永逸的解决慢的问题,不妨把你的mysql升级到mysql8.0吧,mysql8.0默认的字符集已经从latin1改为utf8mb ...

  8. Mysql插入中文的字段内容时乱码的解决方法

    Mysql插入中文的字段内容时乱码的解决方法 参考文章: (1)Mysql插入中文的字段内容时乱码的解决方法 (2)https://www.cnblogs.com/charlypage/p/10780 ...

  9. 解决mysql级联删除时不会启动delete触发器

    解决mysql级联删除时不会启动delete触发器 目前mysql 5.* 版本在级联删除时不会执行delete触发器,当外键级联删除后没有启动触发器可能会产生一些垃圾数据,这些垃圾数据可能因为某些原 ...

最新文章

  1. linux下配置ip地址的方法
  2. 2019 Mac装Cocoapods的步(cai)骤(keng)记录
  3. netperf -R用法
  4. 3.4 多个例子中的向量化-深度学习-Stanford吴恩达教授
  5. 【MySQl】MyISAM和InnoDB索引对比
  6. PCB相关的基础知识
  7. ELK学习记录三 :elasticsearch、logstash及kibana的安装与配置(windows)
  8. linux查看mysql表空间使用率_Oracle查看数据库表空间使用情况sql语句
  9. SpringMVC拦截器(interceptors)
  10. 自学it18大数据笔记-第二阶段hadoop-day11——会持续更新……
  11. Intellij IDEA社区版集成Maven插件
  12. RSA加密算法【手把手解释】
  13. mysql in过大_项目中常用的 19 条 MySQL 优化
  14. 国内的一个不错的ftp搜索引擎
  15. 吊打面试官了解一下?2021年字节跳动春招面试题详解(附详细答案)
  16. 如何破解终端算力困局?PRCV这篇论文让机器人“算有余力”
  17. 动态规划-leetcode#213 打家劫环形舍
  18. 若干个游戏辅助的分析手记(一)
  19. 多校2.1012La Vie en rose
  20. http状态码全解读

热门文章

  1. s:url多值传递的时候出现;amp
  2. BI开发之——ETL注意细节
  3. RHEL 6 配置yum源
  4. SharedCache分析:服务端程序
  5. MYSQL 10038 服务启动不起来
  6. ++++++++++++++++++++++++++++++++++++++++++++1076+++++++++++++++++++++++++++++++++++++++++++++++++++
  7. 阿里云,CentOS下yum安装mysql,jdk,tomcat
  8. 我理解设计模式C++实现观察者模式Observer Pattern
  9. 函数call相关[ASM]
  10. Samba 3.4.0 发布