Я пытаюсь подключить базу данных с помощью следующего скрипта (cxn-test.php)
<?php
$host = '155.30.136.20';//dummy ip
$user = 'abc_user';
$pass = 'xxxxxxxxx';
$dbname = 'welcome';
$link = mysqli_connect($host, $user, $pass,$dbname);
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}else {
echo "success" . PHP_EOL;
}
Когда я пытаюсь на терминале
php cxn-test.php // успех
Но когда я пытаюсь на localhost, я получаю следующую ошибку,
завитки Http: //localhost/cxn-test.php
Error: Unable to connect to MySQL.
Debugging errno: 2002
Debugging error: Permission denied
Это странная проблема: он работает не на локальном хосте, а на командной строке.
У меня возникла та же проблема после получения новой коробки CentOS 7 с запущенным SELinux. Я мог подключиться к своему удаленному серверу БД MySQL из командной строки, но Drupal (и тестовые PHP-скрипты) не смогли.
Проблема оказалась в политиках безопасности SELinux.
По умолчанию политика httpd_can_network_connect_db отключен (это означает, что ваш веб-сервер не могу свяжитесь с удаленной БД.)
Проверьте это через:
getsebool -a | grep httpd
Если httpd_can_network_connect_db выключен, включите его через:
setsebool -P httpd_can_network_connect_db 1
(Флаг -P делает изменение постоянным, поэтому настройка сохраняется после перезагрузки.)
Других решений пока нет …