MySQL 无法远程访问端口 3306。在 Windows 服务器防火墙上启用的端口
MySQL port 3306 not accessible remotely. port enabled on Windows server firewall
看起来很奇怪,我已经跟踪并修复了所有可能的问题,但仍然无法远程访问 MySQL
端口 3306。
这是我的设置:
机器: Windows 服务器 2012 R2
MySQL 服务器: 8.xx
已应用设置:
- 在
my.ini
bind-address
中对 0.0.0.0 进行了处理,因此在执行命令后 netstat -an
这就是我得到的 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
- 来自 Windows 防火墙 我已经启用端口
3306
inbound/outbound。并将其设置为 allow edge traversal
以及
- 我从 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:
- 使用默认设置
- 防火墙已开启
- 没有手动添加防火墙例外
然后我尝试通过命令提示符使用 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
添加回防火墙例外。
- 在防火墙设置中点击“允许另一个应用程序”
- “添加和应用程序”对话框打开,然后单击“浏览”
- 从 MySQL 文件夹中找到
mysqld
- 通常在 C:\Program Files\MySQL\MySQL Server 8.0\bin
中找到
- 点击“添加”,然后勾选“Public”和“私人”复选框
完成后,我尝试连接并成功。请注意,我没有重新添加之前删除的端口,但我仍然可以远程连接。此外,我没有在 my.ini
设置中添加 bind-address
。
看起来很奇怪,我已经跟踪并修复了所有可能的问题,但仍然无法远程访问 MySQL
端口 3306。
这是我的设置:
机器: Windows 服务器 2012 R2
MySQL 服务器: 8.xx
已应用设置:
- 在
my.ini
bind-address
中对 0.0.0.0 进行了处理,因此在执行命令后netstat -an
这就是我得到的TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
- 来自 Windows 防火墙 我已经启用端口
3306
inbound/outbound。并将其设置为allow edge traversal
以及 - 我从 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:
- 使用默认设置
- 防火墙已开启
- 没有手动添加防火墙例外
然后我尝试通过命令提示符使用 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
添加回防火墙例外。
- 在防火墙设置中点击“允许另一个应用程序”
- “添加和应用程序”对话框打开,然后单击“浏览”
- 从 MySQL 文件夹中找到
mysqld
- 通常在C:\Program Files\MySQL\MySQL Server 8.0\bin
中找到
- 点击“添加”,然后勾选“Public”和“私人”复选框
完成后,我尝试连接并成功。请注意,我没有重新添加之前删除的端口,但我仍然可以远程连接。此外,我没有在 my.ini
设置中添加 bind-address
。