2015-05-17 3 views
0

я получаю следующую ошибку при установке Drupal 7:Drupal Установка не может подключиться к серверу MySQL, но там

Не удалось подключиться к серверу базы данных. Сервер сообщает следующее сообщение: SQLSTATE [HY000] [2003] Не удается подключиться к серверу MySQL на «myservername» (13).

Я запускаю MySQL на одном сервере Windows и httpd на другом Linux. MySQL работает просто отлично, и на сервере HTTPd я могу подключить нормально к MySQL следующим образом:

MySQL -h DbServer -p --port = 3001 -u друпал

Точно так же я могу запустить 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, и я не мог понять, как увеличить отчет об ошибках во время установки или найти, где именно проверяется подключение к базе данных.

спасибо.

ответ

1

Можете ли вы подтвердить, что IP-адрес dbserver включен. Перейдите к терминалу и введите: «ping dbserver» и, пожалуйста, опубликуйте результат.

EDITED: эта ситуация была вызвана политикой безопасности в дистрибутиве Linux, где установлен сервер Apache, который не позволяет подключаться к удаленным экземплярам mysql. Для решения этой ситуации перейдите к терминалу и введите sudo setenforce 0, таким образом linux не будет применять такое строжайшее поведение веб-сервера.

+0

Да, это работает. Как и в моем mysqli и pdo-коде, я использую имя сервера, и все в порядке. Я также пробовал ip-адрес, и это не удается. Как я уже сказал, он работает с кодом на веб-сервере, а не с установки Drupal. Я сомневаюсь, что это что-то, но я проследил метод getConnection, а для ключевых и целевых переменных они оба «по умолчанию», я бы подумал, что они будут чем-то другим ... –

+0

Просто я не думаю, что это так далеко. В моем тестовом коде требуется около 5 секунд, чтобы закончить код, но в установщике Drupal, как только я нажму кнопку, он вернется с ошибкой. –

+0

ok Теперь я проверю обслуживание. Пожалуйста, используйте: 'service --status-all' на своем терминале и покажите записи mysql. – biozes

0

Предполагая, что вы используете RHEL/CentOS, я нашел ответ от @alexbilbiehere:

setsebool -P httpd_can_network_connect_db 1 

От the RHEL documentation:

При отключении этого Логическое предотвращает HTTP скрипты и модули от начала подключение к серверам баз данных. Включите этот Boolean, чтобы разрешить этот доступ.

Смежные вопросы