mysql如何设置仅允许特定内网访问_MySQL权限配置中的IP绑定

张开发
2026/4/21 19:27:34 15 分钟阅读

分享文章

mysql如何设置仅允许特定内网访问_MySQL权限配置中的IP绑定
MySQL用户账号绑定IP需精确匹配host字段如api192.168.5.11不支持CIDR%仅作字符通配须删除冗余宽泛权限、检查bind-address与防火墙、区分localhost与127.0.0.1。mysql用户账号绑定具体IP地址MySQL的权限系统靠 userhost 这个组合来识别访问来源host 部分不是“允许范围”而是“必须完全匹配”的主机标识。想只让内网某台机器连就得把 host 写成它的实际IP比如 app-server192.168.10.42。常见错误是写成 user192.168.% 或 user192.168.10.0/24 —— MySQL不支持CIDR掩码% 是通配符但只匹配任意字符不含点号分隔的段数逻辑192.168.% 实际会匹配 192.168.100.200 甚至 192.168x.y非常危险。创建账号时直接指定IPCREATE USER api192.168.5.11 IDENTIFIED BY pwd123;已有账号需用 RENAME USER 或先 DROP USER 再重建不能只改 host执行完记得 FLUSH PRIVILEGES;否则变更不生效为什么GRANT后还是连不上检查host字段是否被覆盖MySQL在权限匹配时会按 userhost 字符串长度由长到短排序匹配最长的优先。如果同时存在 app192.168.5.% 和 app192.168.5.11而前者权限更大那么即使你从 192.168.5.11 连入也会命中前者——导致你以为绑定了IP实际走的是宽泛规则。查当前所有匹配该用户的记录SELECT User, Host FROM mysql.user WHERE User app;删掉冗余的宽泛条目比如 app% 或 app192.168.%确认连接时客户端真实出口IP容器里可能看到的是网关IPK8s Pod可能经过Service代理得看 SHOW PROCESSLIST; 里的 Host 列bind-address和防火墙是两层控制缺一不可bind-address 是MySQL服务监听的网卡地址不是权限控制手段。设成 127.0.0.1 就只能本地连设成 0.0.0.0 才能接受远程连接——但此时仍受账号 host 限制。很多人只改权限却忘了放开监听或者开了 0.0.0.0 却没配防火墙结果外网也能扫到端口。 VWO 一个A/B测试工具

更多文章