mysql在Windows上安装时关闭防火墙配置

1次阅读

mysql windows 安装时无需关闭防火墙,因其默认绑定127.0.0.1:3306仅限本地访问;仅当配置为0.0.0.0:3306并需局域网远程访问时,才需添加专用网络入站tcp 3306规则。

mysql在Windows上安装时关闭防火墙配置

MySQL windows 安装时是否必须关闭防火墙

不需要关闭防火墙。MySQL 默认监听 127.0.0.1:3306,只接受本地连接,防火墙通常不会拦截。只有当你需要从其他机器(比如另一台电脑、虚拟机、docker 容器)远程访问 MySQL 时,才涉及防火墙配置问题。

哪些场景下要配置 Windows 防火墙

典型情况是:MySQL 服务绑定了 0.0.0.0:3306:::3306(IPv6),且你希望局域网内其他设备能连上它。此时 Windows 防火墙默认会阻止入站 TCP 连接。

  • 检查 MySQL 绑定地址:
    SELECT @@bind_address;

    返回 0.0.0.0 才需放行

  • 确认端口监听状态:
    netstat -ano | findstr :3306

    看是否有 LISTENING 且 IP 是 0.0.0.0

  • 仅需添加一条入站规则,协议选 TCP,端口填 3306作用域可限制为局域网 IP 段(如 192.168.1.0/24

用 PowerShell 快速添加防火墙规则(推荐)

比图形界面更可控,也方便复现。执行前请以管理员身份运行 PowerShell:

New-NetFirewallRule -DisplayName "MySQL Server" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow -Profile private
  • -Profile Private 表示仅在“专用网络”(如家庭/公司局域网)生效,不开放公网
  • 若误加规则,可用 Get-NetFirewallRule -DisplayName "MySQL Server" 查看,再用 Remove-NetFirewallRule 删除
  • 不要用 Disable-NetFirewallRule 或直接关防火墙——这会暴露整个系统

常见错误:明明开了防火墙规则还是连不上

多数不是防火墙问题,而是 MySQL 权限或网络配置没调对:

  • 用户账户没授权远程主机:CREATE USER 'user'@'%' IDENTIFIED BY 'pass'; GRANT ALL ON *.* TO 'user'@'%'; FLUSH PRIVILEGES;
  • MySQL 配置文件 my.iniskip-networking=1 被启用(必须注释掉)
  • bind_address 被设为 127.0.0.1(只能本地连),需改为 0.0.0.0 或注释该行
  • Windows 防火墙有多个规则冲突,比如同时存在“阻止所有 TCP 入站”,它优先级更高

真正需要动防火墙的时候很少,但一旦要动,务必限制作用域和协议类型,别图省事关整个防火墙。

text=ZqhQzanResources