当前位置: 首页 > 编程笔记 >

MySQL数据库远程连接很慢的解决方案

耿学义
2023-03-14
本文向大家介绍MySQL数据库远程连接很慢的解决方案,包括了MySQL数据库远程连接很慢的解决方案的使用技巧和注意事项,需要的朋友参考一下

有次同事提出开发使用的MySQL数据库连接很慢,因为我们的MySQL开发数据库是单独一台机器部署的,所以认为可能是网络连接问题导致的。

在进行 ping和route后发现网络通信都是正常的,而且在MySQL机器上进行本地连接发现是很快的,所以网络问题基本上被排除了。以前也遇到过一次这样的问题,可后来就不知怎么突然好了,这次又遭遇这样的问题,所以想看看是不是MySQL的配置问题。在查询MySQL相关文档和网络搜索后,发现了一个配置似乎可以解决这样的问题,就是在MySQL的配置文件中增加如下配置参数:

[mysqld]

skip-name-resolve

在Linux下配置文件是/etc/my.cnf,在windows下配置文件是MySQL安装目录下的my.ini文件。注意该配置是加在 [mysqld]下面,在更改html" target="_blank">配置并保存后,然后重启mysql并远程连接测试,一切恢复如初。该参数的官方解释信息如下:

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很慢或是有很多客户端主机时会导致连接很慢,由于我们的开发机器是不能够连接外网的,所以DNS解析是不可能完成的,从而也就明白了为什么连接那么慢了。同时, 请注意在增加该配置参数后,mysql的授权表中的host字段就不能够使用域名而只能够使用 ip地址了 ,因为这是禁止了域名解析的结果。

 类似资料:
  • 问题内容: 我刚刚在网络托管服务上设置了MySQL数据库,并尝试使用以下php远程连接至该数据库: 我对php和MySQL还是很陌生,我不了解几件事。我已将上面的代码保存在文件中(称为demo.html),并尝试在Web浏览器中查看它(当前它不显示任何内容)。 我的托管公司告诉我,应该使用数据库连接 我以为我需要包括IP地址(使用PhPMyAdmin登录时看到的地址),因此我也添加了该地址。但是,

  • 我在连接到公共托管的静态IP mysql服务器时遇到了一个奇怪的问题。 我能够使用MySQL Workbench成功连接到服务器,也可以通过SSH连接到本地远程服务器。但是从jdbc连接器连接到mysql服务器的尝试(通过NetBeans和本地部署的代码都失败)。在查看日志时,代码正在尝试与远程服务器连接,考虑到用户凭据是本地用户而不是远程用户的。因此用户存在于远程,但java在尝试连接时会考虑u

  • 我正在用Spring Boot开发一个应用程序。我正在使用phpMyAdmin(在我的大学是免费的)数据库进行持久化。我的数据库在远程服务器上。如何为远程数据库连接配置数据源? 请帮助我在属性文件和数据源bean配置中使用我的配置类中的注释来配置它。 例如:登录用户名:,密码:

  • 本文向大家介绍远程连接mysql错误代码1130的解决方法,包括了远程连接mysql错误代码1130的解决方法的使用技巧和注意事项,需要的朋友参考一下 下面给大家介绍远程连接mysql错误代码1130的解决方法: 以上所述是小编给大家介绍的远程连接mysql错误代码1130的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!

  • 本文向大家介绍node连接mysql数据库遇到的问题和解决方案,包括了node连接mysql数据库遇到的问题和解决方案的使用技巧和注意事项,需要的朋友参考一下 今天安装了新版的MySQL(8.0.21),用node框架连接数据库的时候报了个错: Client does not support authentication protocol requested by server; consider

  • 本文向大家介绍php无法连接mysql数据库的正确解决方法,包括了php无法连接mysql数据库的正确解决方法的使用技巧和注意事项,需要的朋友参考一下 即使连接Mysql的语句正确,php也无法连接mysql数据库,出现如下图所示的结果: 首先是在Apache服务器的conf/httpd.conf下的任意位置都没有:PHPIniDir "php压缩目录"这一项。 如"C:/php-5.4.43-W

  • 我正在工作一个应用程序运行在谷歌应用引擎。通常情况下,如果使用Google Cloud SQL,我必须启用Billing/Pay。因此,首先,我决定远程连接到另一台服务器上的mysql数据库。它在离线状态下工作得很好,但在部署我的应用程序后,它就不工作了。很明显,GAE不支持远程连接...有没有别的方法可以绕过这个问题呢?挖隧道? 注意:使用HTTP API从我的数据库返回信息...将需要更多的编

  • 本文向大家介绍连接MySql速度慢的解决方法(skip-name-resolve),包括了连接MySql速度慢的解决方法(skip-name-resolve)的使用技巧和注意事项,需要的朋友参考一下 最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。 原因