我有一个运行 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。它现在可以连接。我们现在正在调查这个私有范围。感谢大家的帮助!