今天在CentOS7虚拟机上安装了mysql,想要在宿主机上远程连接,结果一直报错,就百度了原因,这里分享一篇博客以及自己的一点知识。
引用:
问题描述:从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.85'(111)错误。
[mysql@vvmvcs0 ~]$ mysql -hxxx.xxx.xxx.85 -uroot -pEnter password: www.2cto.comERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.85' (111)
[mysql@vvmvcs0 ~]$ perror 111OS error code 111: Connection refused查看errorCode[mysql@vvmvcs0 ~]$ perror 111OS error code 111: Connection refused
问题分析:1,可能网络连接问,远程ping xxx.xxx.xxx.85 ,能ping通,排除此情况
[mysql@vvmvcs0 ~]$ ping xxx.xxx.xxx.85PING xxx.xxx.xxx.85 (xxx.xxx.xxx.85) 56(84) bytes of data.64 bytes from xxx.xxx.xxx.85: icmp_seq=1 ttl=63 time=0.230 ms
2,排查可能由于85上my.cnf里配置了skip_networking或者bind_address,只允许本地socket连接
2.1 在[mysqld]下设置skip_networking,知识说明: 这使用MySQL只能通过本机Socket连接(socket连接也是本地连接的默认方式),放弃对TCP/IP的监听 www.2cto.com当然也不让本地java程序连接MySQL(Connector/J只能通过TCP/IP来连接)。
2.2 可能使用了bind_address=127.0.0.1(当然也可以是其他ip)[mysqld]bind_address=127.0.0.1知识说明:这种情况可以TCP/IP连接通过查看了my.cnf文件,以上两个都是没设置的,排除掉这两种情况
3,排查DNS解析问题,检查是否设置了: skip_name_resolve。 这个情况肯定不可能,因为我用的是ip,不是主机名。[mysqld]skip_name_resolve知识说明:这个参数加上后,不支持主机名的连接方式。
4, 排查用户和密码问题, 其实用户和密码的错误,不会出现111的,所以排除用户密码问题ERROR 1045 (28000): Access denied for user 'root'@'XXXX' (using password: YES)
5,排查--port问题&#