当前位置:七道奇文章资讯数据防范MySQL防范
日期:2012-04-13 16:44:00  来源:本站整理

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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .