可通过MySQL用户权限、防火墙、TCP Wrappers或云安全组限制IP访问。1. 删除或不创建特定IP的用户账户;2. 使用iptables或firewalld封禁IP对3306端口的访问;3. 配置/etc/hosts.deny禁止IP连接mysqld;4. 云平台通过安全组拒绝指定IP入站。推荐“MySQL权限+防火墙”结合使用,提升安全性与响应效率。

MySQL 本身不直接提供“IP 黑名单”功能,但可以通过多种方式实现限制特定 IP 访问数据库的目的。以下是几种实用且常见的配置方法。
1. 使用 MySQL 的用户权限系统控制访问
MySQL 通过 GRANT 和 REVOKE 命令管理用户权限,可以针对特定主机(IP)创建或删除用户,从而间接实现黑名单效果。
例如,若要禁止某个 IP(如 192.168.1.100)访问,确保不要为该 IP 创建用户账户:
-- 查看是否存在来自该 IP 的用户 SELECT User, Host FROM mysql.user WHERE Host = '192.168.1.100';-- 如果存在,删除该用户 DROP USER 'username'@'192.168.1.100';
也可以显式地只允许白名单 IP,避免遗漏黑名单。
2. 利用防火墙(iptables 或 firewalld)封禁 IP
更高效的方式是在操作系统层面使用防火墙阻止非法 IP 连接 MySQL 端口(默认 3306)。
使用 iptables 封禁指定 IP:
# 禁止来自 192.168.1.100 的访问 iptables -A INPUT -s 192.168.1.100 -p tcp --dport 3306 -j DROP永久保存规则(CentOS/RHEL)
service iptables save
使用 firewalld(CentOS 7+):
# 封禁 IP firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" reject'重新加载配置
firewall-cmd --reload
3. 配置 TCP Wrappers(如果系统支持)
部分 Linux 发行版支持 TCP Wrappers,可通过 /etc/hosts.deny 和 /etc/hosts.allow 控制服务访问。
编辑 /etc/hosts.deny 添加以下内容:
mysqld: 192.168.1.100
确保 MySQL 启动时链接了 libwrap 库,否则此方法无效。
4. 使用安全组或云平台防火墙(云服务器适用)
如果你使用的是阿里云、腾讯云、AWS 等云服务,建议在安全组中直接屏蔽恶意 IP 的 3306 端口入站流量。这种方法最简单、最安全,无需登录服务器操作。
- 进入云控制台 → 找到对应实例的安全组
- 添加规则:拒绝来源为黑名单 IP,协议为 TCP,端口 3306
基本上就这些方法。推荐组合使用“MySQL 用户权限 + 防火墙”双重防护,既灵活又安全。单纯依赖 MySQL 权限可能不够及时,而防火墙能第一时间阻断连接。










