mysql如何限制用户只能访问指定ip_mysql访问控制方法

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

MySQL 限制用户只能从指定 IP 访问,核心是创建用户时明确指定 host(主机地址),并配合防火墙或网络策略增强安全性。默认的

'user'@'localhost'
只允许本机连接;而
'user'@'192.168.1.100'
就只允许该 IP 连接。

创建指定 IP 的用户

使用

CREATE USER
语句时,在用户名后用
@
指定具体 IP 或域名:

CREATE USER 'appuser'@'192.168.1.50' IDENTIFIED BY 'strongpass123';
—— 仅允许 192.168.1.50 连接
CREATE USER 'admin'@'10.0.2.0/255.255.255.0' IDENTIFIED BY 'pass';
—— 允许 10.0.2.0/24 网段(MySQL 8.0+ 支持 CIDR 格式)
CREATE USER 'backup'@'%.example.com' IDENTIFIED BY 'bkpass';
—— 允许匹配该域名的主机(需 DNS 可解析)

授权并刷新权限

创建用户后,用

GRANT
分配具体库表权限,并执行
FLUSH PRIVILEGES
生效:

GRANT SELECT, INSERT ON mydb.orders TO 'appuser'@'192.168.1.50';
FLUSH PRIVILEGES;
—— 必须执行,否则新规则不生效

注意:不要对

'user'@'%'
授权,否则会覆盖 IP 限制效果;如已存在通配符用户,建议先
DROP USER 'user'@'%';
再重建。

验证与排查连接问题

从目标 IP 测试连接,确认是否受限:

在允许的机器上运行:
mysql -u appuser -p -h your-mysql-server-ip
若报错
Access denied for user ... (using password: YES)
,可能是密码错误、host 不匹配,或用户未授权对应数据库
检查当前用户列表:
SELECT User, Host FROM mysql.user;
确认 host 字段是否精确匹配
查看错误日志:
tail -f /var/log/mysql/error.log
(路径依安装方式而异),常含拒绝原因

补充安全建议

仅靠 MySQL 用户 host 限制不够,建议组合使用:

操作系统防火墙(如 iptables / ufw)只放行可信 IP 的 3306 端口 MySQL 配置文件中设置
bind-address = 127.0.0.1
(仅本地监听),再通过 SSH 隧道或反向代理访问
启用 SSL 连接,防止凭据在网络中明文传输 定期审查
mysql.user
表,删除长期不用或 host 为
%
的高危账户

相关推荐