MySql使用skip-name-resolve解决外网链接客户端过慢问题

在腾讯云上面搭建的mysql使用开发的电脑上navicat进行访问时总是特别的慢,原来是Mysql会对请求的地址进行域名解析,开发的电脑并没有域名,所以会导致特别的慢,使用以下进行解决

[mysqld]
skip-name-resolve
skip-grant-tables

官方的解释

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使用skip-name-resolve解决外网链接客户端过慢问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢. 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve. 原因是默认安装的MySql开启了DNS的反向解析.如果禁用的话就不能在MySQL的授权表中使用主机名了而只能用ip格式. 附:How MySQL uses DNS When a new thread connects to mysqld, mysqld will spawn a new thread t

  • mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限

    登陆到mysql,查看进程的信息 复制代码 代码如下: show processlist; 发现大量的进程的状态为 login 原来默认的时候mysql启动时是不使用 skip-name-resolve选项的,这样的话,从其它主机的连接会比较慢,因为mysql会对这个ip做dns反向查询,导致大量的连接处于 login状态..... 解决这个问题有两个办法 一是加入 skip-name-resolve参数重启mysql 二是在 /etc/hosts中加入一句 192.168.0.2 server

  • mysql 加了 skip-name-resolve不能链接数据库问题的解决方法

    mysql 加了 skip-name-resolve不能链接的问题, 要确认 MySql 是否采用过主机名的授权 在 MySql Server 的配置文件 My.ini 中,增加如下两行: [mysqld] skip-name-resolve 它将禁止 MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间. 但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求. 如果开启 ski

  • 远程连接mysql数据库注意事项记录(远程连接慢skip-name-resolve)

    一.如何新建独立帐号并设置权限 这里我使用Navicat作为我的数据库管理工具,打开Navicat. 选择"用户"--"新建用户" 输入用户名.主机.密码,需要注意的是,主机那不是写"localhost",而是写"%" 然后可以设置"服务器权限" 和指定数据库的权限,最后保存退出即可 二.远程连接慢 慢是一个很大的问题,网上的办法是在my.ini的"[mysqld]"下面加入一行&quo

  • Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve)

    MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名.用主机名在权限系统里面进行权限判断.反向DNS解析是耗费时间的,有可能让用户感觉起来很慢.甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了. 可以在配置文件里面禁止MySQL进行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可: skip-name-resolve (windows与linux下一样的) 设备在连

  • MySql使用skip-name-resolve解决外网链接客户端过慢问题

    在腾讯云上面搭建的mysql使用开发的电脑上navicat进行访问时总是特别的慢,原来是Mysql会对请求的地址进行域名解析,开发的电脑并没有域名,所以会导致特别的慢,使用以下进行解决 [mysqld] skip-name-resolve skip-grant-tables 官方的解释 How MySQL uses DNS When a new thread connects to mysqld, mysqld will spawn a new thread to handle the requ

  • flutter中build.gradle仓库的配置(解决外网下载速度过慢失败的问题)

    问题描述 在进行flutter项目开发时,我们常常会碰见我们在执行flutter run指令的情况下,出现资源下载过慢的问题,最终导致下载失败,无法build项目,抛出异常运行终止的现象.这些都会成为新手入门flutter开发的第一道难关,还可能劝退你进入flutter的世界中.俗话说:"车到山前必有路,船到桥头自然直".不经历风雨,那得见彩虹呢! 解决途径 通过更改flutter项目中的build.gradle的仓库地址即可得到解决,当然如果你可以翻墙,大可不必管这些.(我想如果你

  • 解决docker容器无法ping外网的问题

    今天在docker搭建redis环境的时候,发现yum拉取不到资源,上不到网,报了如下错误: http://mirrors.aliyun.com/centos/6.10/extras/x86_64/Packages/epel-release-6-8.noarch.rpm: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.aliyun.com'" Trying other mirror. http://mirrors

  • WebSocket部署服务器但外网无法连接的解决方法

    前言 本文主要给大家介绍了关于WebSocket部署服务器外网无法连接的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 首先要说的是我遇见的问题: WebSocket connection to 'ws://www.xxxx.com/xxx/xx' failed: Error during WebSocket handshake: Unexpected response code: 200 网站绑定到了服务器,直接在服务器上访问webSocket服务是可行的,但是当我

  • 怎样设置才能允许外网访问MySQL

    设置mysql服务允许外网访问,修改mysql的配置文件,有的是my.ini,有的是my.cnf[linux]. 1:设置mysql的配置文件      /etc/mysql/my.cnf      找到 bind-address  =127.0.0.1  将其注释掉://作用是使得不再只允许本地访问:   重启mysql:/etc/init.d/mysql restart; 2:登录mysql数据库:mysql -u root -p mysql> use mysql;   查询host值: m

  • Mysql允许外网访问设置步骤

    1.打开mysql.exe(MySQL Command Line Client),输入密码 2.输入:use mysql; 3.查询host输入: select user,host from user; 4.创建host(如果有"%"这个host值,则跳过这一步) 如果没有"%"这个host值,就执行下面这两句: mysql> update user set host='%' where user='root'; mysql> flush privile

  • Docker不能绑定静态的外网固定ip的问题及解决办法

    前段时间,我一直在研究如何给Docker分配静态ip,主要的用途是让thrift进来和出来都走一个ip,还有就是爬虫可以独立ip地址,这样就很好的实现了爬虫的多ip方式-  但是随着nginx tcp的加入和开发了一个基于Python socket的ip轮询访问模块解决了这两个问题-  当然也不能因为这两问题,就丢弃这问题了-. 在Docker run的时候,咱们可以添加-p参数来控制他的source来源ip.   下面的命令,对外来说,开放了192.168.1.200:9200的端口-  但是

  • mysql 常用设置 字符集编码、自动完成(自动提示)、监听外网ip

    设置mysql监听外网ip 复制代码 代码如下: sudo vi /etc/my.cnfbind-address = 127.0.0.1 设置mysql 字符集 charset 复制代码 代码如下: sudo vi /etc/my.cnf在[mysqld]下面加入一行character_set_server = utf8在[mysql]下面加入一行default-character-set = utf8sudo /usr/local/mysql/support-files/mysql.serve

  • Linux安装mysql并配置外网访问的实例

    配置步骤 1.查看是否配置DNS 如果没有配置DNS参照前文配置DNS 配置相关 如果没有配置DNS yum命令找不到Linux软件库的 DNS配置免费的 DNS1=114.114.114.114即可,也可以加一个备用的DNS2=119.29.29.29 2.用yum安装mysql yum -y install mysql mysql-server mysql-dev 这里用yum 进行-y 同意操作,后面的三个软件分别是mysql, mysql-server,mysql-dev无关顺序 3.启

  • mysql 开放外网访问权限的方法

    如下所示: 主要执行授权命令: 两种方式 1. 允许任意主机以用户bd和密码bdpw连接到local服务器 mysql> GRANT ALL PRIVILEGES ON *.* TO 'bd'@'%' IDENTIFIED Y 'bdpw' WITH GRANT OPTION; mysql> flush privileges; 2. 允许特定的IP地址以用户bd和密码bdpw连接到local服务器 mysql> GRANT ALL PRIVILEGES ON *.* TO 'bd'@'1

随机推荐