欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MySQL远程连接慢的问题

程序员文章站 2022-05-10 07:57:51
...

MySQL远程连接慢的问题,当 mysql client 发起连接请求时,MySql Server 会主动去查 client 的主机名。

1,当 mysql client 发起连接请求时,MySql Server 会主动去查 client 的主机名。

2,首先查找Windows系统目录下 /etc/hosts 文件,搜索域名和IP的对应关系。

3,如果hosts文件没有,则查找DNS设置,如果没有设置DNS服务器,,会立刻返回失败;如果设置了DNS服务器,就进行反向解析,直到timeout。

解决办法

第一种方法 修改Hosts

在 MySql Server 所在服务器上,修改 Windows 的 hosts 文件,增加一行记录,如:

100.ZZZ.YYY.XXX dummy.ju690.cn

然后在 100.ZZZ.YYY.XXX 机器上用 Python 发起连接请求,经测试,可以正常连接,说明 MySql Server 这下可以通过 getnameinfo() 解析出100.ZZZ.YYY.XXX 的主机名了。

但这种方法很机械,所以一般采用下面这种方法。

第二种 修改MySql 的配置文件 my.ini

The solution:

Just add skip-name-resolve option to your MySQL configuration file (my.ini).

在 MySql Server 的配置文件 My.ini 中,增加如下两行:

[mysqld]

skip-name-resolve

它将禁止 MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间。

但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求。

可能的后果

如果开启 skip-name-resolve 选项,要确认 MySql 是否采用过主机名的授权,

在 mysql 中运行如下命令:

mysql> select user,host from mysql.user where host 'localhost' ;

一般会得到以“%”授权(也就是任何地址)的记录:

+------------------+-------------+

| user | host |

+------------------+-------------+

| root | % |

| user_sync | 192.168.0.113 |

如果有host名是什么“DB1”“DB2”的,那么删除授权表中有 hostanme 的记录,然后重启mysqld。

MySQL远程连接慢的问题