这里有一个有趣的,似乎没有陷入任何我已阅读或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进行连接,但是我真的很想知道为什么它打破了原因:
可能有其他脚本使用192.168.0.40进行连接,这些脚本不常运行,现在已经被中断。 审计他们都需要更多的时间,而不是我现在想要的。
我很好奇,想知道为什么它坏了,所以我可以正确地解决它。
任何帮助?
如果您确实想要远程访问服务器,请打开正确的防火墙端口(默认为3306)。
确保MySQL用户有权从192.168.0.40连接。
我有同样的问题,只能连接到本地或127.0.0.1上的数据库,并尝试了一切。 我打开防火墙端口,尝试编辑my.ininetworkingconfiguration,等等。
解决scheme(这是我最终解决的步骤):
我有我的root用户设置为本地主机,我认为是默认的。 做这个%而不是localhost为我解决了这个问题。
同样,这一切都假设你的防火墙端口是开放的,你已经尝试了一切。

