一、用户授权指定ip访问
1.1 创建限定ip的用户
-- 允许192.168.1.100通过用户名user1和密码password123访问所有数据库 create user 'user1'@'192.168.1.100' identified by 'password123'; -- 授权该用户对所有数据库的所有权限(生产环境建议按需授权) grant all privileges on *.* to 'user1'@'192.168.1.100'; -- 刷新权限使设置立即生效 flush privileges;
1.2 限制ip网段访问
-- 允许192.168.1.%整个网段访问特定数据库 create user 'user2'@'192.168.1.%' identified by 'password456'; grant select, insert on mydb.* to 'user2'@'192.168.1.%'; flush privileges;
二、修改现有用户的访问ip
2.1 直接更新mysql.user表
-- 将用户user3的访问ip从原地址改为新地址 update mysql.user set host='10.0.0.50' where user='user3' and host='192.168.2.100'; flush privileges;
2.2 使用rename user命令
-- 更规范的修改方式(mysql 5.0.2+支持) rename user 'user4'@'old_ip' to 'user4'@'new_ip';
三、服务器端防火墙配置
3.1 linux iptables规则示例
# 只允许特定ip访问mysql默认端口(3306) iptables -a input -p tcp --dport 3306 -s 192.168.1.100 -j accept iptables -a input -p tcp --dport 3306 -j drop # 保存规则(centos/rhel) service iptables save
3.2 查看当前连接ip
-- 在mysql中查看当前连接的客户端ip select host from information_schema.processlist where id=connection_id();
四、配置文件加强安全
4.1 修改my.cnf/my.ini
[mysqld] # 只监听内网ip(替换为你的实际ip) bind-address = 192.168.1.10 # 禁止域名解析(提高性能和安全) skip-name-resolve
重要提示:
修改配置后需重启mysql服务:systemctl restart mysqld
生产环境建议结合ssl加密连接
定期审计用户权限:select user,host from mysql.user;
五、验证连接
# 从客户端测试指定ip是否可连接 mysql -u user1 -p -h 192.168.1.10
如果连接失败,请检查:
- 防火墙是否放行
- 用户权限是否正确
- mysql是否绑定到正确ip
- 网络路由是否可达
附:mysql设置某个用户的ip访问权限
- 1、授权所有数据库的所有表的所有权限给ip为任意值用户名为test密码为pwd的用户
grant all on *.* to 'test'@'%' identified by 'pwd';
- 2、授权mydb数据库的所有表的增删改查权限给ip为1.1.1.1用户名为test密码为pwd的用户
grant select,insert,update,delete on mydb.* to 'test'@'1.1.1.1' identified by 'pwd';
- 3、授权mydb数据库的stu表的修改权限给ip为1.1.1.1用户名为test密码为pwd的用户
grant update(name,age) on mydb.stu to 'test'@'1.1.1.1' identified by 'pwd';
总结
到此这篇关于mysql指定ip登录配置方法的文章就介绍到这了,更多相关mysql指定ip登录配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论