У меня странная ситуация на вновь установленном сервере, и похоже, что на этот раз Google не может мне помочь. Я не могу подключиться к (удаленному) mysql из моего php-кода. Когда я пытаюсь подключиться из командной строки на том же сервере, соединение выполняется succseds.
Не удалось подключиться: невозможно подключиться к серверу MySQL на «MYSQL.SERVER» (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
Было решение.
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. Кажется, что проблема связана с локальным сервером при указании полного FQDN сервера вместо localhost в php-коде ,
Эта команда устранит проблему с разрешениями для текущего сеанса:
setsebool httpd_can_network_connect_db on
Чтобы сделать исправление постоянным для последующих перезагрузок, вам необходимо сделать следующее:
setsebool -P httpd_can_network_connect_db on
Спасибо всем за этот вопрос за спасение меня от «разрешения отказал» ад. 🙂