MySQL 默认监听0.0.0.0:3306,必须通过bind-address限制监听地址、系统防火墙(ufw/firewalld)设置IP白名单、云平台安全组精确放行,并与MySQL用户host字段协同配置,四层防护缺一不可。MySQL 默认监听所有网卡,不设防火墙等于裸奔MySQL 安装后默认绑定 0.0.0.0:3306,只要端口开放,任何能连上服务器的机器都可能暴力试探 root 密码。权限控制(比如 GRANT)只管「登录后能做什么」,不管「谁可以连上来」------这是网络层的事,得靠防火墙兜底。实操建议:先确认 MySQL 实际监听地址:ss -tlnp | grep :3306 或查 my.cnf 中的 bind-address;若为 0.0.0.0 或注释掉,说明已暴露全网生产环境必须设为 127.0.0.1(仅本地)或具体内网 IP(如 192.168.10.5),再配合防火墙白名单别依赖 skip-networking:它会禁用 TCP 连接,导致无法远程管理、备份工具(如 mysqldump 通过网络调用)失效ufw / firewalld 开放指定 IP 访问 3306 端口Linux 主流发行版用 ufw(Ubuntu)或 firewalld(CentOS/RHEL),核心原则是:默认拒绝所有入站,只放行可信来源。常见错误现象:开了 ufw allow 3306,结果整个互联网都能连 ------ 因为这等价于放行所有 IP 的 3306 端口。正确做法:Ubuntu(ufw):ufw allow from 192.168.10.100 to any port 3306(仅允许可信应用服务器)CentOS(firewalld):firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.100" port port="3306" protocol="tcp" accept',之后 firewall-cmd --reload若需多 IP,逐条添加;别用 /24 网段掩码,除非该网段内所有机器都可信检查是否生效:ufw status verbose 或 firewall-cmd --list-all云服务器安全组比系统防火墙更优先阿里云、AWS、腾讯云等平台的安全组是第一道网关,规则匹配早于系统防火墙。即使你本地 ufw 拒绝了所有连接,安全组开着 3306 全放行,MySQL 依然裸奔。使用场景:数据库与应用部署在不同云主机,且走内网通信。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
BK贝壳3 小时前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了2601_966949654 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南程序员清风7 小时前
数据处理脚本工程化:日志、配置、命令行与测试正在走向自律8 小时前
数据集成产品的技术底座:从日志解析原理到 KFS 同步链路搭建(含建表与增删改查完整代码)程序员塔塔喵8 小时前
【MySQL篇|第七篇】MySQL事务在世修行8 小时前
智学文枢:页面切换与跨页数据预填2601_962885729 小时前
如何用 Python 把 K 线重采样成任意周期?独隅9 小时前
Claude API 实战教程:从入门到完整项目打工仔折腾 AI9 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析_孤傲_9 小时前
快速掌握 MySQL 语法