фоновая цель: я хочу ограничить входящее подключение к серверу MYSQL только для определенного хоста, установив входящие правилаБрандмауэр Windows. Я имею в виду, что я хочу разрешить только определенному хосту подключаться к серверу MYSQL.
В настройках брандмауэра Windows по умолчанию я увидел следующее:
оба порта открыты. поэтому я заблокировал все входящие соединения на порт 33060, поскольку не ожидаю входящих соединений от X-Protocol:
Затем я попытался подключиться к серверу MYSQL с моего локального ПК, и подключение прошло успешно. Затем я попытался ограничить входящее подключение к порту 3306 сервера MYSQL только для указанного IP-адреса:
Сначала выберите Разрешить соединение, если оно защищено.
во-вторых, указал удаленный IP-адрес, по которому я подключаюсь к этому серверу MYSQL.
в зачерненной части на изображении выше я ввел свой глобальный IP-адрес (IPv4) моего локального ПК. Я ввел его в формате XX.XXX.XXX.XX. Я получил свой глобальный IP-адрес вэта он-лайн услугаЗатем я попытался подключиться к серверу MYSQL со своего локального ПК, но соединение не удалось.
Я проверил подключение через Test-NetConnection
windows powershell. Но подключение к порту не удалось..
в чем я не прав?
Тест1:
Я также протестировал, как показано ниже.
Я меняю настройку следующим образом:
Remote IP address
на Any IP address
.
и оставил настройку ниже как есть:
Allow the connection if it is secure
затем попробуйте Test-NetConnection
в windows powershell. но он не доходит до порта..
Тест2:
Я снова провел тест, как показано ниже.
Я продолжаю устанавливать, как показано ниже:
Remote IP address
.
и изменил настройку ниже:
Allow the connection
затем попробуйте Test-NetConnection
в windows powershell. но он снова не подключается к порту..
решение1
Вам необходимо изменить настройку наРазрешить это соединение, а не «Разрешить это соединение, если оно безопасно».
Последняя настройка разрешит соединение только в том случае, если оно защищено с помощью IPSec, который вы почти наверняка не используете и никогда не будете использовать.
решение2
Удалите опцию «разрешить соединение, если оно безопасно». Это добавляет дополнительный уровень аутентификации и шифрования, который не поддерживается клиентом MySQL. Вы не можете использовать его здесь.
Кроме того, если вы получаете только сообщение failed
, как вваш скриншот, то сервер MySQL не прослушивает этот интерфейс. Если бы проблема была в брандмауэре, вы бы получили сообщение TimedOut
.
Убедитесь, что сервер MySQL прослушивает внешний интерфейс или все интерфейсы (0.0.0.0), а не только интерфейс обратной связи (127.0.0.1), который, скорее всего, настроен по умолчанию.
Вы можете проверить это, запустив на сервере:
Get-NetTCPConnection -State Listen -LocalPort 3306