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

Другие вопросы по тегам