Подтвердить что ты не робот

Php не может подключиться к mysql с ошибкой 13 (но в командной строке)

У меня странная ситуация на вновь установленном сервере, и, похоже, Google на этот раз не может мне помочь. Я не могу подключиться к (удаленному) mysql из моего php-кода. Когда я пытаюсь подключиться из командной строки на том же сервере, соединение succseds.

Не удалось подключиться: невозможно подключиться к Сервер MySQL на "MYSQL.SERVER" (13)

Вот код и попытка подключения из командной строки

[[email protected] httpdocs]$ cat  test.php

<?
$link = mysql_connect('MYSQL.SERVER', 'testusersimon', '123456');
if (!$link) {
    die('Could not connect: ' .  mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

[[email protected] httpdocs]$ mysql -h MYSQL.SERVER -utestusersimon --password=123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 352108
Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit
Bye

Я попробовал запустить PHP скрипт как в режиме mod_php, так и в FastCGI, проверьте, что "/etc/php.d/mysql.ini" отображается в разделах phpinfo(), а также в разделах mysql, mysqli и pdo_mysql.

но результат был тот же, я знаю его что-то простое, но я просто не могу. Пожалуйста, помогите:)

Изменить: Проблема была в SElinux

setsebool -P httpd_can_network_connect_db=1

Было решение.

4b9b3361

Ответ 1

setsebool -P httpd_can_network_connect=1

также будет полезной командой CLI для многих людей, которые посещают этот вопрос, чтобы разрешить соединения mysql_connet() из запросов HTTP (Apache) на удаленный сервер базы данных MySQL, обеспечить включение сетевых подключений из httpd в SElinux, обычно расположенный в /etc/selinux/config (по умолчанию отключено, чтобы хакеры не атаковали другие машины с помощью вашего httpd).

Ответ 2

В CentOs 6 вы можете использовать следующее (без -P)

setsebool httpd_can_network_connect=1

Ответ 3

В Fedora 21 с apache 2/httpd версии 2.6 с использованием php версии 5.6 при подключении к удаленному серверу mysql 5.6 или версии mariadb 10. Кажется, что проблема связана с локальным сервером при указании FQDN сервера вместо localhost в php-код.

Эта команда исправляет проблему с разрешениями для текущего сеанса:

setsebool httpd_can_network_connect_db on

Чтобы сделать исправление постоянным для последующих перезагрузок, вам нужно сделать это:

setsebool -P httpd_can_network_connect_db on

Спасибо всем за этот вопрос за спасение меня от "разрешения отказали" ад.:)