MySQL 无法连接 can't connect to mysql server on 'localhost' (10055)

记录一次失败的服务器问题排查。

1. 问题

    环境:windows2012 、mysql 5.6

    出现问题:重启MySQL服务,显示启动成功,用第三工具连接时提示:错误码2003  can't connect to mysql server on 'localhost' (10055);

    通过cmd命令尝试连接,还是无法连接。

    首先确定mysql服务已经启动了,如果未启动就连接的话也会有这样的错误提示。

2.排查并尝试解决

   第一反应先百度 can't connect to mysql server on 'localhost' (10055),得到参考,进行以下修改:

  • 通过注册表配置动态分配端口的最大值,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里加上如下的键值:

          ValueName: MaxUserPort (有博主的情况是只修改这一项)

          ValueType: DWORD

          Valuedata: 65534

  • 通过注册表配置连接等待时间,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters加上

    键值:TcpTimedWaitDelay

    数值类型:REG_DWORD - 时间(以秒为单位)

    有效范围:30-300(十进制)

    默认值:0x78(十进制 120)

         由于文章太多,我也记不清到底是参考哪位博主的了,有一位博主介绍了MaxUserPort和TcpTimedWaitDelay,链接地址:https://www.cnblogs.com/tianzhiliang/articles/2400176.html

     可能是当时没重启服务器,做完以上修改后重启MySQL服务后问题依旧存在。

 

3.梳理

   关闭其他服务,只启动MySQL数据库的服务,通过命令netstat -ano查看当前已使用的端口,发现只有很少一部分。再次尝试连接数据库,问题依旧存在,此时我有点懵了。

   选择修改MaxUserPort和TcpTimedWaitDelay,是觉得没有可用的连接才造成数据库无法连接,可是现在根本就没有占用多少连接,更懵了。

 

4.重启大法

由于已经有用户再使用该系统,所以只能先解决当前问题,无奈只能采用重启大法,重启后该问题不再复现。

 

5.总结

   平时对服务器的操作就比较少,也是第一次遇见这个情况,虽然这次没找到问题的原因,但是总结一下,如果再此发生这个问题也能有个思路。

  • 先看数据库的错误日志,在my.ini文件中(C:\ProgramData\MySQL\MySQL Server 5.6下),找到log-error="LAPTOP-KP8RB178.err"(C:\ProgramData\MySQL\MySQL Server 5.6\data下)。
  • 还得排查端口占用情况,netstat -aon|findstr 3306命令,查看数据库的TCP连接情况,如果很多状态为TIME_WAIT的连接,关闭这些连接后再试试。
  • 有位博主的建议是关闭防火墙,由于对服务器防火墙知识了解不多,我当时直接把Windows Firewall服务给关了,很尴尬,无法远程了,这个方案做个备选吧。
  • 数据库版本和系统兼容问题,看了这篇文章后才有这个猜测,都是English,有些地方我肯定也没整明白。

 

还有一些参考链接如下:

 

 

 

 

 

posted @ 2020-08-03 16:59  五线农民工  阅读(2868)  评论(0编辑  收藏  举报