MySql连接错误:Can't get hostname for your address:
1.确定服务是否开启
首先进入计算机管理,打卡服务,确定MySQL服务状态是否为正在运行,如若关闭,即手动打开。
2.重新配置winsock文件
服务是开启的,报错依旧不变,打开CMD,运行netsh winsock reset,重修配置winsock文件,重启电脑。
无意外的话,就能连接上数据库了。如若不能,继续下一步。
3.修改Hosts
在 MySql Server 所在服务器上,修改 Windows 的 hosts 文件,增加一行记录,如:
100.ZZZ.YYY.XXX dummy.ju690.cn
然后在 100.ZZZ.YYY.XXX 机器上用 Python 发起连接请求,经测试,可以正常连接,说明 MySql Server 这下可以通过 getnameinfo() 解析出100.ZZZ.YYY.XXX 的主机名了。
但这种方法很机械
注:修改Hosts的方法,因为现有水平局限,不懂起原理,所以不多加解释。
4.修改MySql 的配置文件 my.ini
首先找到my.ini配置文件的路径,
将鼠标放在第一个箭头指向的位置,单击,就会出现实例信息,可看到配置文件My.ini的路径。
根据路径即可找到配置文件所在,用记事本打开
在[mysqld]下添加
skip-name-resolve
它将禁止 MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间。
然后重启MySQL,如若依旧报错,再次执行第二步。重启电脑之后,有可能会报错“MySQL连接数据库出现错误:Host '127.0.0.1' is not allowed to connect to this MySQL server”
实际访问数据库配置:jdbc.url=jdbc:mysql://localhost:3306/*****
实际数据设置为只允许localhost访问,经检查发现是MySQL配置文件my.ini中设置了skip-name-resolve,注释之后可以正常访问
废话:
看完之后是不是有点揪心???我开始按照网上解决方案,改配置文件,改hosts,最后依然没解决,到后来想到了刷新一下winsock,刷新之后给我的报错就是本Ip不被允许连接,百度一番之后删除掉了skip-name-resolve,才能连接上MySQL server。hosts文件与my.ini配置文件,我都改回原样,所以我把重新配置winsock给放在了第二步,按理来说执行完第二步就完事了,可我也没尝试过,所以还是附上了另两种解决方案的方法。