背景目的:我想通过设置入站规则来限制仅针对特定主机的 MYSQL 服务器的入站连接Windows防火墙。我的意思是,我只想允许特定主机连接到 MYSQL 服务器。
在 Windows 防火墙设置中,默认情况下我看到的是以下内容:
两个端口都已打开。因此,我阻止了到端口 33060 的所有入站连接,因为我不希望有来自 X-Protocol 的入站连接:
然后,我尝试从本地 PC 连接到 MYSQL 服务器,连接成功。接下来,我尝试将 MYSQL 服务器端口 3306 的入站连接限制为指定的 IP 地址:
第二,指定我要连接到此 MYSQL 服务器的远程 IP 地址。
在上图中涂黑的部分,我输入了我本地电脑的全局 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
然后,在 Windows Powershell 中尝试Test-NetConnection
。但它无法连接到端口。
测试2:
我也再次进行了如下测试。
我继续像下面这样设置:
Remote IP address
。
并更改了以下设置:
Allow the connection
然后,在 Windows Powershell 中尝试Test-NetConnection
。但它无法再次通过端口。
答案1
您需要将设置更改为允许此连接,而不是“如果安全则允许此连接”。
后一种设置仅当通过 IPSec 保护时才允许连接,而您几乎肯定不会使用并且永远不会使用 IPSec。
答案2
删除“如果连接安全则允许连接”选项。这将添加 MySQL 客户端不支持的额外身份验证和加密层。您无法在此处使用它。
此外,如果您只收到以下消息failed
,例如你的截图,则 MySQL 服务器未监听该接口。如果问题出在防火墙上,您将收到一条消息TimedOut
。
确保 MySQL 服务器正在监听外部接口或所有接口(0.0.0.0),而不是仅仅监听环回接口(127.0.0.1),这很可能是默认设置。
您可以通过在服务器上运行以下命令来检查:
Get-NetTCPConnection -State Listen -LocalPort 3306