PHP 5.3升级 - 无法连接到MySQL服务器

时间:2011-05-06 18:51:22

标签: php mysql

我今天对此进行了一些研究,但似乎没有解决这个问题。我最近从5.1.6升级到PHP 5.3.3,以及从5.0升级到5.5。然后,以下代码生成错误“无法连接到mysql数据库”:

$connection =  mysql_pconnect($dbhost, $dbusername, $dbpassword);
if (!$connection) {
  //Can't connect
  die('Could not connect: ' . mysql_error());
  return;
}

并收到以下错误:

  

警告:mysql_pconnect():无法连接到第19行的/var/www/html/ws/Cust/customerWS_1_1.php中的'199.59.157.103'(13)上的MySQL服务器无法连接:无法连接连接到'199.59.157.103'(13)

上的MySQL服务器

我可以通过命令行连接到远程主机,并尝试了从重置密码到关闭IP表的所有内容。我有点不知所措 - 所以任何帮助都会受到赞赏。

4 个答案:

答案 0 :(得分:2)

我们遇到了类似的问题,错误信息“无法连接到mysql数据库”,也许以下几点也很有用:

  • 检查mysql用户权限(在我们的情况下,使用外部连接,我们在表中有旧的服务器IP地址(允许访问))GRANT ALL PRIVILEGES ON tablename.* TO 'username'@'145.1.1.2'; - >更改后重新加载权限(FLUSH PRIVILEGES;

  • 禁用SELinux参数。在新的Plesk版本(> 10?)中,这将自动设置为启用... - >在/ etc / selinux / config中更改说:

    的行

    SELINUX=enforcingSELINUX=disabled  详情请见http://googolflex.com/?p=482

答案 1 :(得分:1)

与以前的mysql服务器存储在数据库中的旧身份验证方案哈希相关的PHP 5.3 mysql驱动程序限制。这可能会导致存储密码出现问题,因此使用旧密码无法访问数据库。

要解决此问题,您应该使用相同的登录名和相同的密码重新创建mysql用户。

答案 2 :(得分:0)

当您说“我能够通过命令行连接到远程主机”时,您的意思是,您正在连接到MySQL服务器吗?或者您正在通过SSH连接MySQL服务器并从MySQL服务器的命令行连接到它?如果是后者,那么当您升级到MySQL 5.5时,您可能会意外地阻止MySQL绑定/侦听公共IP。检查您的my.cnf

否则:您的PHP代码是否与MySQL服务器在同一台服务器上运行?您的权限可能会被取消。如果客户端只能从“localhost”访问连接,则MySQL权限非常特别关于通过它的IP地址连接到MySQL服务器,反之亦然。

答案 3 :(得分:0)

首先,您应确保连接参数$dbhost$dbusername$dbpassword正确无误。假设这些是正确的,你应该检查你的mysql ini设置。我假设bind-address设置为127.0.0.1或localhost,但不设置为公共IP地址。

另请注意,如果可以从公共IP地址连接到mysql,则存在安全风险。您可能希望查看不需要此类连接的解决方案。