Ошибка подключения базы данных ТИП: 2002: в доступе отказано

Я пытаюсь подключить базу данных с помощью следующего скрипта (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

Это странная проблема: он работает не на локальном хосте, а на командной строке.

5

Решение

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

15

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]