Я не могу подключиться удаленно через порт 3306. Моя хостинговая компания сообщает, что я должен разрешить подключение через порт 3306 с помощью iptables.
Какую команду набрать на терминале
Chain INPUT (policy DROP)
target prot opt source destination
...
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- eth2947.rt.adsl.internode.on.net anywhere state NEW tcp dpt:mysql
...
Попробуйте использовать tcptraceroute hostname.fqdn 3306
чтобы увидеть, не блокируется ли соединение где-то раньше.
Наиболее вероятная проблема заключается в том, что mysql имеет конфигурацию по умолчанию, чтобы не прослушивать IP-соединения (старое значение по умолчанию, skip-networking
вариант), или только для прослушивания обратной петли (bind-address
вариант). Попробуйте закомментировать их, если они есть, а затем перезапустите mysql.
Ну, это во многом зависит от того, как выглядит ваш текущий набор правил iptables. Что-то вроде этого должно работать в вашем файле / etc / sysconfig / iptables:
-A INPUT -m state --state NEW -m tcp -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT
... где 1.2.3.4 - это IP-адрес, с которого вы подключаетесь.
Если это не сработает, опубликуйте содержимое / etc / sysconfig / iptables, и я исправлю свой ответ.
Другой вариант - просто подключиться к вашему серверу mysql через туннель ssh. Сделайте это, подключитесь к своему серверу с помощью чего-то вроде:
$ ssh user@host -L3306:localhost:3306
Затем укажите своему локальному клиенту mysql на localhost: 3306, и он будет туннелирован на сервер. Имейте в виду, что вам также необходимо предоставить доступ в mysql для соответствующей комбинации пользователь / хост.
Я должен добавить, что, как правило, не рекомендуется открывать ваш порт mysql в Интернете, если в этом нет крайней необходимости. Параметр туннеля ssh - гораздо лучший способ удаленного подключения.