广告
返回顶部
首页 > 资讯 > 数据库 >mysql中远程连接mysql很慢,本地连接mysql很快怎么处理
  • 179
分享到

mysql中远程连接mysql很慢,本地连接mysql很快怎么处理

2024-04-02 19:04:59 179人浏览 八月长安
摘要

这篇文章主要介绍Mysql中远程连接mysql很慢,本地连接mysql很快怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 症状:远程连接 mysql 很慢,但是 本地连接

这篇文章主要介绍Mysql中远程连接mysql很慢,本地连接mysql很快怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

症状:远程连接 mysql 很慢,但是 本地连接 mysql 很快, ping 和 route 网络通信都是正常的。

解决:mysql 的配置文件中增加如下配置参数:
[mysqld]
skip-name-resolve

原理:

作为MySQL调优的一部分,很多人都推荐开启skip_name_resolve。这个参数是禁止域名解析的(当然,也包括主机名)。很多童鞋会好奇,这背后的原理是什么,什么情况下开启这个参数比较合适。

基于以下原因,MySQL服务端会在内存中维护着一份host信息, 包括三部分:IP,主机名和错误信息。主要用于非本地tcp连接。

1. 通过在第一次建立连接时缓存IP和host name的映射关系,同一主机的后续连接将直接查看host cache,而不用再次进行DNS解析。

2. host cache中同样会包含IP登录失败的错误信息。可根据这些信息,对这些IP进行相应的限制。后面将会具体提到。

host cache的信息可通过perfORMance_schema中host_cache表查看。

那么,IP和host name的映射关系是如何建立的呢?

1. 当有一个新的客户端连接进来时,MySQL Server会为这个IP在host cache中建立一个新的记录,包括IP,主机名和client lookup validation flag,分别对应host_cache表中的IP,HOST和HOST_VALIDATED这三列。第一次建立连接因为只有IP,没有主机名,所以HOST将设置为NULL,HOST_VALIDATED将设置为FALSE。

2. MySQL Server检测HOST_VALIDATED的值,如果为FALSE,它会试图进行DNS解析,如果解析成功,它将更新HOST的值为主机名,并将HOST_VALIDATED值设为TRUE。如果没有解析成功,判断失败的原因是永久的还是临时的,如果是永久的,则HOST的值依旧为NULL,且将HOST_VALIDATED的值设置为TRUE,后续连接不再进行解析,如果该原因是临时的,则HOST_VALIDATED依旧为FALSE,后续连接会再次进行DNS解析。

另,解析成功的标志并不只是通过IP,获取到主机名即可,这只是其中一步,还有一步是通过解析后的主机名来反向解析为IP,判断该IP是否与原IP相同,如果相同,才判断为解析成功,才能更新host cache中的信息。

基于上面的总结,下面谈谈 host cache的优缺点:

缺点:当有一个新的客户端连接进来时,MySQL Server都要建立一个新的记录,如果DNS解析很慢,无疑会影响性能。如果被允许访问的主机很多,也会影响性能,这个与host_cache_size有关,这个参数是5.6.5引入的。5.6.8之前默认是128,5.6.8之后默认是-1,基于max_connections的值动态调整。所以如果被允许访问的主机很多,基于LRU算法,先前建立的连接可能会被挤掉,这些主机重新进来时,会再次进行DNS查询。

优点:通常情况下,主机名是不变的,而IP是多变的。如果一个客户端的IP经常变化,那基于IP的授权将是一个繁琐的过程。因为你很难确定IP什么时候变化。而基于主机名,只需一次授权。而且,基于host cache中的失败信息,可在一定程度上阻止外界的暴力破解攻击。

关于阻止外界的暴力破解攻击,涉及到max_connect_errors参数,默认为100,官方的解释如下:

If more than this many successive connection requests from a host are interrupted without a successful connection, the server blocks that host from further connections.

如果某个客户端的连接达到了max_connect_errors的限制,将被禁止访问,并提示以下错误:

Host 'host_name' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'

下面来模拟一下

首先,设置max_connect_errors的值

即便后来使用了正确的账号和密码登录,依旧会被阻止。

再来看看host_cache表中的信息,sum_connect_errors为2了。

如果该参数设置为OFF,则上述方式就会报错,通过报错信息可以看出,它直接将127.0.0.1转化为localhost了。

[root@localhost ~]# mysql -uroot -h227.0.0.1 -p123456 -P3306
Warning: Using a passWord on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

注意: 't1'@'%'中包含't1'@'127.0.0.1',如果开启skip_name_resolve参数,则't1'@'%'中定义的密码可用于't1'@'127.0.0.1'的登录,如果没有开启该参数,则't1'@'127.0.0.1'会转化为't1'@'localhost'登录,此时't1'@'%'定义的密码并不适用。

以上是“mysql中远程连接mysql很慢,本地连接mysql很快怎么处理”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql中远程连接mysql很慢,本地连接mysql很快怎么处理

本文链接: https://www.lsjlt.com/news/62536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql中远程连接mysql很慢,本地连接mysql很快怎么处理
    这篇文章主要介绍mysql中远程连接mysql很慢,本地连接mysql很快怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 症状:远程连接 mysql 很慢,但是 本地连接 ...
    99+
    2022-10-18
  • 怎么在Navicat中远程连接 MySQL
    怎么在Navicat中远程连接 MySQL?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1首先我们需要更改 3306端口,查看3306 端...
    99+
    2022-10-18
  • MySQL中怎么实现root远程连接
    这篇文章将为大家详细讲解有关MySQL中怎么实现root远程连接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  Create USER &nb...
    99+
    2022-10-18
  • 远程客户端连接MysqL数据库太慢怎么办
    这篇文章主要讲解了“远程客户端连接MysqL数据库太慢怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“远程客户端连接MysqL数据库太慢怎么办”吧!远程...
    99+
    2022-10-18
  • mysql中怎么允许用户远程连接
    这篇文章给大家介绍mysql中怎么允许用户远程连接,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 一,安装MySQL 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所...
    99+
    2022-10-18
  • MySQL中怎么开启远程连接权限
    这期内容当中小编将会给大家带来有关MySQL中怎么开启远程连接权限,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、登陆mysql数据库   ...
    99+
    2022-10-18
  • 本地DataGrip连接Linux服务器中MySQL失败处理方法
    文章目录 前言一、本地数据库与Linux服务器中数据库密码是否相同,相同会导致连接失败二、Linux中MySQL授权远程访问三、关闭防火墙或开通端口四、DataGrip高级配置 前言 本地...
    99+
    2023-09-08
    linux 服务器 运维 mysql centos
  • mysql中怎么设置远程连接root权限
    今天就跟大家聊聊有关mysql中怎么设置远程连接root权限,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 在远程连接mysql的时候应该都碰到过...
    99+
    2022-10-18
  • MySQL中异常的客户端连接怎么处理
    这篇文章主要介绍MySQL中异常的客户端连接怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景1: 程序反馈数据库出现了max_connection的错误, 导致client...
    99+
    2022-10-18
  • 本地或远程连接mysql时提示Unable to connect to any of the specifie怎么解决
    本篇内容介绍了“本地或远程连接mysql时提示Unable to connect to any of the specifie怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作