Назад | Перейти на главную страницу

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

любая помощь или способ отследить проблему ???

Вроде проблема "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 для получения более подробной информации о опции "skip-network" - Параметры сервера MySQL 5.5 - skip-network

Если вы не включили опцию «skip-network», вам необходимо дважды проверить параметры базы данных, которые вы предоставляете установщику Moodle, особенно. убедитесь, что для "UNIX socket" установлено значение false.

Как указано Вот это могло быть из-за политики selinux. Попробуйте выключить selinux на обоих серверах. Включение или отключение SELinux на CentOs

Я отключил selinux на сервере базы данных.

Решением было выключить selinux. ОБЕ серверы.

большое спасибо Kewa @kewa