CentOS: Не удается подключиться к серверу mysql удаленно, но я могу подключиться к нему 'nc'
У меня есть две виртуальные машины, обе работают под CentOS.
Одним из них является веб-сервер: 10.2.2.59 - на этом сервере я размещаю файлы веб-приложений Moodle.
Одним из них является сервер БД: 10.2.2.58 Я установил MySQL, и он работает хорошо, изменился my.conf
комментировать #skipping-network
и прокомментировал #bind-address
,
Я настроил брандмауэр для принятия порта 3306
-A INPUT -s 10.3.2.59 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
На (.59) я пытался nc -z 10.2.2.58 3306
и вывод
Connection to 10.2.2.58 3306 port [tcp/mysql] succeeded!
Также я попытался подключиться к MySQL удаленно из (.59) в (.58), используя mysql -u moodle_XXXX_ur -p -h 10.2.2.58
и он подключился и mysql>
подсказка показывает.
Я предоставляю moodle_XXXX_ur все привилегии moodle_XXX_DB
Основная проблема, когда я пытаюсь установить Moodle в (.59) с этими параметрами
Database host : 10.2.2.58
Database name : moodle_XXX_DB
Database user : moodle_XXXX_ur
Database password: XXXXXXXXXXXXX
Tables prefix: mdl_
Unix socket: true
Я попытался установить сокет Unix в false
также.
ошибка показывает, что:
Error: Database connection failed
It is possible that the database is overloaded or otherwise not running properly.
The site administrator should also check that the database details have been correctly specified in config.php
Warning: mysqli::mysqli(): (HY000/2002): Permission denied in /var/www/html/lib/dml/mysqli_native_moodle_database.php on line 76
строка 76 выглядит так:
$conn = new mysqli($dbhost, $dbuser, $dbpass, '', $dbport, $dbsocket); // Connect without db
любая помощь, или любой способ отследить проблему???
4 ответа
Как указано здесь, это может быть из-за политики selinux. Попробуйте выключить selinux на обоих серверах. Включить или отключить SELinux на CentOs
Кажется, проблема в том, что "SELinux Booleans" использует следующую команду, чтобы показать состояние логического значения
$getsebool -a | grep httpd_can_network
и "httpd_can_network_connect_db" должен быть включен
httpd_can_network_connect_db --> on
в противном случае вы должны включить эту команду
$setsebool -P httpd_can_network_connect_db 1
Вы, кажется, говорите, что включили опцию "пропустить сеть" в MySQL. Если это так, то сервер не будет слушать сеть. Другими словами, если у вас включен режим "пропустить сеть", вы сможете общаться с этим сервером только через локальный сокет UNIX, а не с другого сервера по сети.
Чтобы это исправить, удалите строку конфигурации "skip-network" и перезапустите MySQL, после чего вы сможете подключиться.
Пожалуйста, смотрите документацию MySQL для более подробной информации о опции "пропустить сеть" - опции сервера MySQL 5.5 - пропустить сеть
Если вы не включили опцию "Пропустить сеть", вам нужно дважды проверить параметры базы данных, которые вы предоставляете установщику Moodle, esp. убедитесь, что для "UNIX socket" установлено значение false.
Я выключил selinux на сервере базы данных.
Решением было отключить selinux на ОБАХ серверах.
большое спасибо Kewa @kewa