У меня есть корневой сервер (Ubuntu 14.04) с запущенным MYSQL (5.5.41) и пытающимся получить доступ к базе данных с двух разных домашних страниц на двух разных серверах. Серверы домашней страницы используют статические ips.
Я настроил iptables в корне.
iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -s 'my_homepage_ip' -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j REJECT --reject-with icmp-port-unreachable
Если я пытаюсь получить доступ к серверу с двух домашних страниц, я получаю:
Не удается подключиться к серверу MySQL на сервере ‘server_ip’ (111) 2003.
Домашние страницы работают на веб-сайтах от какого-то немецкого провайдера 1und1.
Если я открываю iptables и удаляю строку отклонения, все работает нормально. Также я попытался получить доступ к SQL Server с моего локального компьютера, на котором запущен сервер XAMPP, с тем же сценарием, который я использую на сервере домашней страницы. Это отлично работает.
Сервер (‘my_server’) и порт (3306) определены в моем сценарии php.
$db = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME, DB_PORT);
Я предполагаю, что я получил неправильные IP-адреса сервера домашней страницы или что сервер домашней страницы использует другой порт, чем 3306.
Попробуйте изменить третью строку на iptables -A INPUT -p tcp --dport 3306 -j LOG
, Это будет регистрировать все попытки к порту MySQL к вашему /var/log/messages
файл, включая IP-адрес источника. Это позволит вам убедиться, что исходный IP-адрес совпадает с IP-адресом, используемым для вашего веб-сайта. Если он отличается, просто измените строку 2 с правильным IP-адресом.
Других решений пока нет …