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

这篇具有很好参考价值的文章主要介绍了MySQL在远程访问时非常慢的解决skip-name-resolve。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

后来在网上发现解决方法,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

官方解释信息如下:

How MySQL uses DNS

When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.

If the operating system doesn't support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until the first thread is ready.

You can disable DNS host lookup by starting mysqld with –skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.

If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with –skip-name-resolve or by increasing the HOST_CACHE_SIZE define (default: 128) and recompile mysqld.

You can disable the hostname cache with –skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.

If you don't want to allow connections over TCP/IP, you can do this by starting mysqld with –skip-networking.

翻译

MySQL如何使用DNS

当一个线程连接到mysqld,mysqld将产生新的线程来处理请求。这个帖子会先检查你的名字是在服务器缓存。如果没有线程将调用gethostbyaddr_r()和gethostbyname_r()来解析主机名。

如果操作系统不支持上述线程安全调用,螺纹锁互斥调用()和gethostbyname()相反。请注意,在这种情况下,没有其他线程可以解决其他主机不在服务器缓存直到第一个线程已经准备好。

你可以从–跳过名字mysqld解决禁用DNS主机查找。在这种情况下,您只能在MySQL特权表中使用IP名称。

如果你有一个非常缓慢的DNS和许多主机,你可以获得更多的性能通过禁用DNS名称解析lookop与–跳过或增加host_cache_size定义(默认值:128)和编译mysqld。

您可以禁用服务器与–跳过主机缓存。你可以用冲洗主机或mysqladmin冲洗主机清除服务器缓存。

如果你不想让连接在TCP / IP,你可以通过从–跳过网络mysqld。文章来源地址https://www.toymoban.com/news/detail-515327.html

到了这里,关于MySQL在远程访问时非常慢的解决skip-name-resolve的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Github访问比较慢的办法

    目录 前言 一、Github出错的原因 二、解决办法 1.修改hosts文件        1.1  打开文件:        1.2  添加ip地址        1.3  dns刷新 2.Github镜像 总结          无论是在学习中还是在以后的工作中,我们都需要通过做一些经典的项目来巩固自己的计算 机基础知识,github是一个

    2024年02月11日
    浏览(49)
  • 解决国内 GitHub 访问慢的问题

    经常在github上找一些好玩的学习项目,但是经常出现github页面打开速度很慢甚至无法打开的情况,往往导致计划被打乱,瞬间不想学习了。今天就来总结一下解决github访问慢的方法。 GitHub访问慢或者无法访问一般是由以下问题引起的: 本地网络访问慢,科学上网速度很快 本

    2024年02月11日
    浏览(44)
  • 一招解决GitHub访问慢的情况

    之前我在网上搜过解决办法,其中一个是修改 hosts 文件,但是效果不太理想。我在这里给大家推荐github上的一个开源项目:FastGithub 。用了这个之后,效果就比较理想了,次次都能访问到。 源码地址:GitHub - dotnetcore/FastGithub: github加速神器,解决github打不开、用户头像无法加

    2024年02月11日
    浏览(44)
  • Linux下解决访问github慢的问题

    Github打开慢的原因: DNS解析的问题; 服务器在国外。 解决方案: 修改本地host文件,增加配置内容,绕过域名解析,达到加速的目的。 输入以下命令修改host文件: 在 127.0.0.1 localhost 下面添加: 重启 systemd-resolved 服务,刷新DNS: 命令执行报错,请搜索自己版本的系统相应的

    2024年02月09日
    浏览(50)
  • ubuntu解决github访问速度慢的一个小tip

    登录http://tool.chinaz.com/dns/ 查询以下域名映射,并分别取访问速度较快的一个ip,比如我的 将查询到的ip和域名设置到host中: 保存,退出,并重启网络 此时访问网页速度提升明显

    2024年02月13日
    浏览(50)
  • 解决VS Code安装远程服务器插件慢的问题

    最近想在服务器上做juypter notebook的代码运行,发现要给服务器安装Jupyter插件,但是安装速度奇慢无比(因为服务器不连外网),一开始查看从VS Code插件市场下载插件的博客,但是感觉还是比较麻烦。 假如单位的网络可以高速访问外网的话,给出更加便捷的做法如下: 打开

    2024年02月07日
    浏览(52)
  • 关于Mysql使用left join写查询语句执行很慢的问题解决

    目录 (一)前言 (二)正文 1. 表结构/索引展示 (1)表结构 (2)各表索引情况 2. 存在性能问题的SQL语句 3. 解决思路 (1)执行计划思路调优 (2)字符集匹配调优 (三)总结 1. 关于执行计划中TYPE的性能比较 2. 关于left join优化 3. 其他注意点 这几天供应商在测试环境上使

    2024年02月02日
    浏览(49)
  • mysql开启远程访问

    2024年01月25日
    浏览(39)
  • mysql开启远程访问权限

    在默认情况下,MySQL只允许本地登录,如果需要远程访问数据库,如果不开启远程访问权限,会报错java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up。 下面介绍一下如何开启MySQL远程访问 mysql -uroot -p use mysql; select User,authent

    2024年02月16日
    浏览(40)
  • MySQL设置远程访问权限

    当我们在日常开发中;需要连接其他同事的数据库或者其他服务器的数据库;可能会出现以下情况 我们输入的用户和密码都正确;但是提示我们用户没有权限;这个用户指的是远程连接的电脑ip没有访问权限;不是mysql的用户没有权限 意味着该用户访问mysql被拒绝;也就是该

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包