无法使用IP地址连接到本地Mysql,但可以从远程服务器连接到CAN

这里有一个有趣的,似乎没有陷入任何我已阅读或search的MySQL连接问题:在Ubuntu 12.04框中,我有一些系统更新等待安装,我今天晚上照顾。 安装之后,我开始在系统日志中看到一些错误,抱怨一个特定的php脚本不能再连接到mysql的实例。 这里是具体的错误:

PHP Warning: mysql_connect(): Can't connect to MySQL server on '192.168.0.40' (4) 

现在,服务器的IP地址是192.168.0.40,我已经检查确保我有0.0.0.0的mysql监听,这样我就可以使用“localhost”或“192.168.0.40”进行连接。

这里是奇怪的地方:从本地机器,如果我尝试以下:

 mysql -uroot -p -h192.168.0.40 

我得到这个错误:

 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.40' (110) 

我检查了,错误110表示操作系统超时,错误2003是mysql通用的“无法连接”的错误。 这表明它不是用户的权限。

但是,如果我从远程计算机执行相同的操作(例如,从192.168.0.30开始),我就可以毫无问题地login了。

而且,本地机器上连接到mysql的其他脚本使用“localhost”作为主机而不是“192.168.0.40”连接没有任何问题。 此外,我可以连接通过MySQL套接字,从命令行和PHP脚本都没有问题。

所以,这感觉就像在本地盒子上的某种networking问题,但是这个盒子上没有iptables规则(外面是防火墙),我不知道还有什么可能造成这种情况。

这个有问题的脚本在最新的系统更新之前完美运行。

现在,我只是简单的改变脚本来通过localhost进行连接,但是我真的很想知道为什么它打破了原因:

  1. 可能有其他脚本使用192.168.0.40进行连接,这些脚本不常运行,现在已经被中断。 审计他们都需要更多的时间,而不是我现在想要的。

  2. 我很好奇,想知道为什么它坏了,所以我可以正确地解决它。

任何帮助?

如果您确实想要远程访问服务器,请打开正确的防火墙端口(默认为3306)。

确保MySQL用户有权从192.168.0.40连接。

我有同样的问题,只能连接到本地或127.0.0.1上的数据库,并尝试了一切。 我打开防火墙端口,尝试编辑my.ininetworkingconfiguration,等等。

解决scheme(这是我最终解决的步骤):

  • 打开MySQL工作台
  • 以pipe理员身份login到数据库
  • 导航到服务器菜单上方
  • select用户和权限
  • 确保您要连接的所有帐户都select了“限制到主机匹配”部分。

我有我的root用户设置为本地主机,我认为是默认的。 做这个%而不是localhost为我解决了这个问题。

同样,这一切都假设你的防火墙端口是开放的,你已经尝试了一切。

referencePicture1

referencePicture2