У меня есть служба mariaDB, работающая на удаленном сервере A. У меня есть второй удаленный сервер B, на котором запущен httpd. Межсетевой экран NAT обоих серверов A и B разрешает весь трафик для порта 3306 и ICMP. Сервер B также поддерживает порт 80. На сервере mariaDB A есть пользователь 'foouser'@'[IPofServerB]'
предоставлена привилегия выбора; Привилегии сброшены. Кроме того, я также предоставил 'foouser'@'%'
такие же разрешения.
Сервер A my.conf имеет адрес привязки, равный 0.0.0.0, и прокомментировал пропуск сети (я также пробовал прямо комментировать адрес привязки), firewalld включает правило, разрешающее TCP на порт 3306, я использовал setsebool -P httpd_can_network_connect_db 1
чтобы разрешить соединения с apache в SELinux, а iptables показывает прослушивание порта 3306. Firewalld сервера B также включает правило, разрешающее TCP на порт 3306.
Я могу пинговать A и B со своего домашнего компьютера, A с B и B с A. Я жестяная банка подключиться к серверу mariaDB A с моего домашнего компьютера, на котором запущен apache из XAMP, с foouser'@'IPofHomeComputer
предоставлен точно такой же доступ. я не может подключиться к серверу mariaDB A от B. Я получаю Connection failed: Can't connect to MySQL server on '[IPofServerA]' (110)
.
В обоих случаях у меня есть один и тот же PHP-код, пытающийся установить соединение:
<?php
$servername = "[IPofServerA]";
$username = "foouser";
$password = "[foouserPasswd]";
$dbname = "[databaseInQuestion]";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>