我在自己电脑上通过Xshell命令mysql -u root -p可以登陆数据库,但是我Navicat for MySQL客户端通过ssh连接服务器数据库却连不上,报错:2013-Lost connection to MySQL server at 'reading initial communication packet', system error: 0请问到底是怎么回事?
在网上找个很多资料都不行,与防火墙无关,与网络无关,与端口无关,service iptables stop关闭防火墙,重装服务器和我自己电脑上的mysql,换台电脑连接,都不行。修改my.conf,我安装的是rpm包,没有my.conf文件,修改了my-medium.conf,还试了复制my-medium.conf到/etc/my.conf,都不行。
我的疑问是通过Xshell命令登陆mysql,和我客户端通过ssh连接,这两种方式是一样的道理吗?都是通过ssh连接服务器的3306端口啊,为什么一个可以连接,一个不能连接?

解决方案 »

  1.   

    本地连接和远程连接肯定不一样
    话说默认root用户是没有远程连接权限的,你确定你grant了?
    这个错误可能的情况太多了,my.conf的配置可能的是 skip-name-resolve段,wait_timeout和max_allowed_packet的设置
    也有可能是客户端与服务器段版本不匹配最好还是用mysql官方的client试一下远程连接
      

  2.   

    Mysql如果你长时间不访问不连接的话是会死掉的
      

  3.   

    首先,我之前一直都连的好好的。然后,我的mysql数据库里的user表中有一项是host=%,表示允许所有IP远程连接。my.cnf文件我没有动过,我的服务器上本来是没有my.cnf文件的,在/usr/share/mysql/目录下有几个.cnf文件,应该是mysql的配置文件,我看网上说默认用my-medium.cnf文件,我复制my-medium.cnf文件到/etc/my.cnf,按照网上说的添加skip-name-resolve,依然没有用。现在本地可以正常连接,远程的话,我通过Xshell用命令也可以连接,就是Navicat客户端通过ssh连不上。我的QQ是157535983,希望大家能加我QQ聊一下,在这里聊不太方便,感谢大家!
      

  4.   

    没看懂怎么叫Navicate通道ssh连接
    你不走socket的?
    既然你用shell可以连接,那就是你客户端的问题了
      

  5.   

    现在换了个工具phpMyAdmin可以连接暂时先用着吧,数据库问题真是搞死人啊,Navicate连接数据库的时候创建连接-->ssh-->使用ssh通道,在这里可以设置数据库通过ssh连接远程mysql数据库啊,客户端我觉得也没有问题,我重装过客户端Navicat,还是连不上(以前可以连),我换了个电脑也还是连不上,并且我搭建了一个测试服务器,还是用我的客户端Navicat可以连接测试服务器。