Apache 服务器 A 尝试连接到 mysql 服务器 B。超时

Apache 服务器 A 尝试连接到 mysql 服务器 B。超时

我有一个运行 PHP 的 apache web 服务器。我正尝试从 apache 服务器连接到运行 mysql 服务器的数据库服务器。以下是现有设置的简要说明。

  • Apache 服务器:RHEL 5.5;PHP 5.3.2
  • 数据库服务器:Ubuntu 10.04 64位;mysql服务器版本5.1
  • 没有防火墙规则限制这两台机器之间的连接。无论是在我们的硬件防火墙中还是在 iptables 中。
  • /etc/mysql/my.cnf 将 bind-address 设置为机器的 ip。
  • skip-networking 被注释掉,即被禁用。
  • mysql 正在运行,位于标准端口 3306 上
  • /var/run/mysqld/mysqld.sock 归 mysql 所有
  • 我可以本地连接到 mysql

以下是我的php连接脚本:

<?php

$host="555.555.55.55";
$user="some_user"; 
$pass="some_pass";   

$conn = mysql_connect($host, $user, $pass);

if ($conn === FALSE) { echo mysql_error(); } 
else { echo 'Connected'; mysql_close($conn); }

?>

尝试在 apache 服务器上托管的浏览器中执行 php 脚本只会产生:“无法连接:无法连接到‘555.555.55.55’上的 MySQL 服务器 (4)”

有什么建议吗?谢谢。

答案1

我们将机器的 IP 更改为我们机构内的其他 IP 范围。从私有范围更改为公共 IP。它现在可以连接。我们现在正在调查这个私有范围。感谢大家的帮助!

https://serverfault.com/questions/200774/apache-server-a-attempts-conn-to-mysql-server-b-times-out-what-am-i-missing/201308#201308

答案2

只是为了排除简单的事情,你试过ps -A | grep mysqld在 Ubuntu 服务器上运行吗?如果这里没有文本输出,则服务器实际上没有运行。

mysql -u root -p您可以通过从 Ubuntu 机器上的终端运行来连接到 MySQL 服务器吗?如果可以,您也可以mysql -u root -p -h <ubuntu-server-ip>从 Red Hat 服务器进行连接吗?

您的 PHP 脚本看起来很好,但就其价值而言,您通常希望在检查 $conn 变量时进行更明确的比较,例如:

if ($conn === FALSE) { echo mysql_error(); } else { echo 'Connected'; }

此外,如果$conn设置为FALSE,则mysql_close($conn)在底部调用会浪费服务器时间(mysql_close(FALSE)会占用时间来默默返回 FALSE);您只需要释放一个有效的资源标识符,在这种情况下(非持久连接)您不需要显式释放资源。

相关内容