我在安装drupal 7时出现以下错误:
无法连接到数据库服务器。服务器报告以下消息:SQLSTATE [HY000] [2003]无法在' myservername'上连接到MySQL服务器(13)。
我在一台Windows服务器上运行MySQL,在另一台Linux上运行httpd。 MySQL运行得很好,在httpd服务器上我可以很好地连接到MySQL,如下所示:
mysql -h dbserver -p --port = 3001 -u drupal
同样地,我可以运行mysqli和pdo,它的连接也很好,我的httpd:
<?php
$servername = "dbserver";
$username = "drupal";
$password = "xxx";
$dbname = "drupal";
$port = 3001;
$conn = new mysqli($servername, $username, $password, $dbname, $port);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
$conn->close();
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname;port=$port", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$conn=null;
?>
所以我的网络服务器或php或mysql没有任何问题。只是通过安装它失败了。我已经进入高级并输入了所有正确的细节。
有什么想法吗?我看了,没有apache日志,我无法弄清楚如何在安装过程中增加错误报告或找到数据库连接检查的确切位置..
感谢。
答案 0 :(得分:1)
你能确认你有dbserver的ip映射吗? 转到终端并键入:&#34; ping dbserver&#34;并请发布结果。
EDITED:这种情况是由linux发行版的安全策略引起的,其中apache服务器的设置并不允许它连接到远程mysql实例。要解决这种情况,请转到终端并输入sudo setenforce 0
,这样linux就不会强制执行此类严格的网络服务器行为。
答案 1 :(得分:0)
假设您正在使用RHEL / CentOS,我找到了@alexbilbie here的答案:
setsebool -P httpd_can_network_connect_db 1
禁用时,此布尔值可防止HTTP脚本和模块启动与数据库服务器的连接。启用此布尔值以允许此访问。