mysql如何配置访问IP黑名单_mysql访问IP黑名单方法

来源:这里教程网 时间:2026-02-28 20:28:16 作者:

MySQL 本身不直接提供“IP 黑名单”功能,但可以通过多种方式实现限制特定 IP 访问数据库的目的。以下是几种实用且常见的配置方法。

1. 使用 MySQL 的用户权限系统控制访问

MySQL 通过 GRANTREVOKE 命令管理用户权限,可以针对特定主机(IP)创建或删除用户,从而间接实现黑名单效果。

例如,若要禁止某个 IP(如 192.168.1.100)访问,确保不要为该 IP 创建用户账户:

-- 查看是否存在来自该 IP 的用户
SELECT User, Host FROM mysql.user WHERE Host = '192.168.1.100';
<p>-- 如果存在,删除该用户
DROP USER 'username'@'192.168.1.100';</p>

也可以显式地只允许白名单 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
<h1>永久保存规则(CentOS/RHEL)</h1><p>service iptables save</p><div class="aritcle_card flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/ai/1646" title="Hoppy Copy"><img
                                                                                src="https://www.herecours.com/d/file/efpub/2026/28-28/20260228122810722247.jpg" alt="Hoppy Copy"  onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/ai/1646" title="Hoppy Copy">Hoppy Copy</a>
                                                                        <p>AI邮件营销文案平台</p>
                                                                </div>
                                                                <a href="/ai/1646" title="Hoppy Copy" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </div>

使用 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'
<h1>重新加载配置</h1><p>firewall-cmd --reload</p>

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 权限可能不够及时,而防火墙能第一时间阻断连接。

相关推荐