MySQL远程衔接ERROR2003(HY000):Can't connect to MySQL server on'XXXXX'的问题[MySQL防范]
本文“MySQL远程衔接ERROR2003(HY000):Can't connect to MySQL server on'XXXXX'的问题[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 -p
Enter password: www.110hack.com
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.85' (111)
[mysql@vvmvcs0 ~]$ perror 111
OS error code 111: Connection refused
查看errorCode
[mysql@vvmvcs0 ~]$ perror 111
OS error code 111: Connection refused
问题解析:
1,大概网络衔接问,远程ping xxx.xxx.xxx.85 ,能ping通,解除此情形
[mysql@vvmvcs0 ~]$ ping xxx.xxx.xxx.85
PING 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问题,有大概85的MySQL port不是默许3306, 这样我远程衔接时,没有指定--port,用的是3306, 而85上没有对3306举行监听.
ps -ef | grep mysqld
公然是: 85上的MySQL利用的是3308 port.
终究衔接方法:加上--port=3308
[mysql@vvmvcs0 ~]$ mysql -hxxx.xxx.xxx.85 -uroot -p --port=3308
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
为什么呈现这么初级的错误呢?
因为我一向在用85上的MySQL, 并且每次都是直接用mysql -uroot就衔接上了,没有指定--port,这样我就一向认为这MySQL的port一向是默许的3306的.
其实根本缘由是:
1. MySQL本地衔接,假如不指mysql --protocol=tcp, 衔接默许是socket方法衔接的.这点大家都知道. www.2cto.com
2, MySQL socket衔接是按照sokect文件来的,与--port不相关的,假如是一机多实例,则用-S(大概--socket=name )来指定衔接哪个实例.
就是这个socket衔接对--port无辨认效果,招致排查这个问题这么久.
见下面: 其实85上只有一个port为3308的MySQL实例,但是用3306仍旧是衔接上此实例,阐明socket衔接方法忽视--port参数.
-bash-3.2$ mysql -uroot --port=3308
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql -uroot --port=3306
Welcome to the MySQL monitor. Commands end with ; or \g.
再次阐明底子细节很重要啊.
作者 RogerZhuo
以上是“MySQL远程衔接ERROR2003(HY000):Can't connect to MySQL server on'XXXXX'的问题[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |