apache 服务器 A 尝试连接到 mysql 服务器 B。超时。我遗漏了什么?

apache 服务器 A 尝试连接到 mysql 服务器 B。超时。我遗漏了什么?

我有一个运行 PHP 5.3.2 的 apache web 服务器(Red Hat Enterprise Linux Server 版本 5.5(Tikanga))。我正尝试使用 php 连接到运行 mysql 服务器的新 Ubuntu 10.04 64 位服务器。以下是现有设置的简要说明。

  • mysql 服务器版本 5.1
  • 没有防火墙规则限制这两台机器之间的连接。无论是在我们的硬件防火墙中还是在 iptables 中。
  • /etc/mysql/my.cnf 将 bind-address 设置为机器的 ip。
  • skip-networking 被注释掉,即被禁用。
  • mysql 正在运行,位于标准端口 3306 上

以下是我的php连接脚本:

<?php

$nl = "<br>";

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

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

if (!$conn){
        die('Could not connect: ' . mysql_error() . $nl);
}
else {
        echo "connected!";
}

mysql_close($conn);

?>

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

有什么建议吗?谢谢。

答案1

测试 1 必须是:

apachebox% telnet mysqlbox 3306

如果这不起作用,则说明您遇到了一个问题,必须先解决该问题,然后才能采取其他措施。

答案2

如果超时,请安装 tshark。(您的包管理器应该有最新版本)

在客户端和服务器上:(-i <adaptor>如果没有eth0使用则添加)

tshark port 3306

再次尝试连接并观察两个会话,看看数据包在哪里丢失。这将缩小查找范围。

答案3

SELinux?可能已启用但尚未配置。

您能从 LAN 内的另一个客户端连接到您的 Mysql 服务器吗?

答案4

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

相关内容