MySQL有关1042 Can’t get hostname for your address的问题分

背景:

MySQL有关1042 Can’t get hostname for your address的问题分析解决过程

1.etc下的hosts文件有:     127.0.0.1   localhost

 

2.MySQL的my.ini配置文件:     [mysqld] 节点下已经加入以下两行代码

[Comment 1]

 

 前同事企鹅上面说他安装的mysql 5.5,发现用mysql客户端远程连接的时候,报1042-Can’t get hostname for your address错误,但是权限已经grant了并且grant成功了。

        skip-name-resolve #忽略主机名的方式访问

 这个报错的意思是“您的地址无法获得主机名”,我就想到了skip-name-resolve参数。

        lower_case_table_names=1 #忽略数据库表名大小写 

官方文档: 

3.mysql 服务已经启动成功

--skip-name-resolve

 

Use IP addresses rather than host names when creating grant table entries. This option can be useful if your DNS does not work.

 

 

问题:

--skip-name-resolve

Navicat 连接mysql 报1042错误 can't get hostname for your address

Do not resolve host names when checking client connections. Use only IP numbers. If you use this option, all Host column values in the grant tables must be IP numbers or localhost. See Section 7.7.11, “How MySQL Uses DNS”.

终端 连接mysql 报1042错误 can't get hostname for your address

 

 

mysql> show variables like '%skip_name_resolve%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| skip_name_resolve | ON   |
+-------------------+-------+
1 row in set (0.00 sec)

mysql> set global skip_name_resolve=0;
ERROR 1238 (HY000): Variable 'skip_name_resolve' is a read only variable
mysql> 

原因:

 

有可能引发的原因有:VPN工具 ,代{过}{滤}理工具,网游加速,等

失败了,看来是只有修改my.cnf了

一般一些第三方提供的网络连接工具,会容易造成这方面的问题。

 

例如:网易加速,如果关机前不退出的话,就有机率发生这样的问题。

在[mysqld]节点下修改

 

skip-name-resolve
#忽略主机名的方式访问
lower_case_table_names=1
#忽略数据库表名大小写
解决方案:

 

1.用管理员运行cmd

2.执行     netsh winsock reset

3.重启电脑

 

重启MySQLD process即可。

 

 

[Comment 2]

本文由金沙官网线上发布于数据库,转载请注明出处:MySQL有关1042 Can’t get hostname for your address的问题分

您可能还会对下面的文章感兴趣: