MySQL 无法远程访问端口 3306。在 Windows 服务器防火墙上启用的端口

MySQL port 3306 not accessible remotely. port enabled on Windows server firewall

看起来很奇怪,我已经跟踪并修复了所有可能的问题,但仍然无法远程访问 MySQL 端口 3306。

这是我的设置:

机器: Windows 服务器 2012 R2

MySQL 服务器: 8.xx

已应用设置:

  1. my.ini bind-address 中对 0.0.0.0 进行了处理,因此在执行命令后 netstat -an 这就是我得到的 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
  2. 来自 Windows 防火墙 我已经启用端口 3306 inbound/outbound。并将其设置为 allow edge traversal 以及
  3. 我从 MySQL 服务器创建了一个用户 % all host 然后也提供了对所有数据库的权限。已检查

我想这些是我后来采取的行动。但这根本不起作用。

当我尝试从其他机器执行 telnet server_ip 3306 错误时:Connecting To server_ip ...Could not open a connection to the host, on port 3306: Connect failed。本地主机工作正常。

我没有看到任何其他可能导致此问题的解决方法吗?

我已经尝试在本地 PC 上安装 MySQL 8.0:

  1. 使用默认设置
  2. 防火墙已开启
  3. 没有手动添加防火墙例外

然后我尝试通过命令提示符使用 telnet local_ip port 从远程 Windows Server 2016 Standard 进行连接,我收到了这个:

J
 8.0.27
       ZPhqTaMC v|)64Pthmmysql_native_password

表示连接已经建立。我使用 SQLYog 工具进一步测试它:
我肯定可以连接到它。

我接下来要做的是在此处进行防火墙设置

Control Panel\All Control Panel Items\Windows Defender Firewall\Allowed applications

并删除了安装过程中发生的所有相关防火墙异常,因此我删除了以下内容:

mysqld
port3366 <-- this is the port I used
port33060 

当我尝试远程连接时,它告诉我:

Connecting To local_ip...
Could not open connection to the host, on port 3366: Connect failed

这证实了我对防火墙阻止连接的怀疑。现在,OP 说该端口已添加到防火墙但仍然无法连接,所以我之后的第一步是将 mysqld 添加回防火墙例外。

  1. 在防火墙设置中点击“允许另一个应用程序”
  2. “添加和应用程序”对话框打开,然后单击“浏览”
  3. 从 MySQL 文件夹中找到 mysqld - 通常在 C:\Program Files\MySQL\MySQL Server 8.0\bin
  4. 中找到
  5. 点击“添加”,然后勾选“Public”和“私人”复选框

完成后,我尝试连接并成功。请注意,我没有重新添加之前删除的端口,但我仍然可以远程连接。此外,我没有在 my.ini 设置中添加 bind-address