必须严格限制mysql 3306端口访问,仅允许可信ip(如应用服务器内网ip或本地固定公网ip)通过tcp协议连接,禁用root远程登录,新建专用用户,安全组与数据库权限双重管控,vpc内网仍需配置安全组规则并确认启用状态。

必须开放 3306 端口,但不能简单填 0.0.0.0/0 —— 这是绝大多数 MySQL 被黑的直接原因。
只开 3306 TCP,且严格限制源 IP
MySQL 默认监听 3306 端口,安全组入方向规则里只允许这一条明确的 TCP 规则:
-
协议类型:TCP -
端口范围:3306(不是3306/3306或3306-3306,阿里云控制台填单个数字即可) -
授权对象:填应用服务器的内网 IP(如172.16.0.10/32),或跳过公网暴露,改用内网连接 - 如果必须从本地开发机直连,填你当前公网 IP +
/32(例如203.208.60.1/32),不要图省事写0.0.0.0/0
别信“先开 0.0.0.0/0 测试完再关”的说法
真实场景中,一旦开放 0.0.0.0/0 到 3306,平均 47 秒内就会被暴力扫描盯上。你还没来得及改密码,root@% 就可能已被爆破成功。
- MySQL 安装后默认不启用远程
root,mysql_secure_installation脚本默认禁用root远程登录(选y禁止),这是正确行为 - 若真需要远程管理,应新建专用用户(如
admin@'172.16.0.10'),而非放开root@'%' - 安全组和数据库权限是两层控制:安全组拦流量,MySQL 用户权限控操作,缺一不可
VPC 内网场景下,3306 可以不开公网,但安全组仍要配
即使你的应用服务器和 ECS 在同一个 VPC 内,也必须为 ECS 实例所在的安全组添加入方向规则——VPC 内网流量同样受安全组控制。
- 授权对象填应用服务器的内网 IP 段(如
172.16.0.0/16)或具体 IP(推荐) - 不要依赖“同安全组互通”这种模糊认知;阿里云安全组默认拒绝所有入方向,无论公网还是内网
- 如果用的是 ECS+RDS 组合,ECS 安全组不用开 3306,RDS 白名单里加 ECS 内网 IP 即可
最常被忽略的一点:安全组规则修改后不生效,不是缓存问题,而是没点「保存」或规则优先级被更高优先级的拒绝规则覆盖了。检查时务必点进规则详情页确认「已启用」状态,且没有其他 3306 的拒绝规则在它上面。











