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


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

не удалось подключиться: не удается подключиться к Сервер MySQL на ' MYSQL.Сервер' (13)

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

[u1@bosko 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);
?>

[u1@bosko 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

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

3 56

3 ответа:

setsebool -P httpd_can_network_connect=1

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

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

setsebool httpd_can_network_connect=1

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

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

setsebool httpd_can_network_connect_db on

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

setsebool -P httpd_can_network_connect_db on

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