要在 MySQL 中设置只允许特定 IP 地址访问数据库服务器,您可以通过以下几种方式实现:
这是最常用的方法,通过创建或修改 MySQL 用户,限制其只能从特定 IP 访问。
-- 创建新用户并限制IP
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';
-- 授予权限(例如所有数据库的所有权限)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.100';
-- 或者限制特定数据库
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'192.168.1.100';
-- 刷新权限使更改生效
FLUSH PRIVILEGES;如果要允许多个 IP:
-- 为每个IP创建单独的用户
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';
CREATE USER 'username'@'192.168.1.101' IDENTIFIED BY 'password';
-- 或者使用通配符(允许一个IP段)
CREATE USER 'username'@'192.168.1.%' IDENTIFIED BY 'password';-- 查看现有用户及允许的host
SELECT user, host FROM mysql.user;
-- 修改用户的host
UPDATE mysql.user SET host='192.168.1.100' WHERE user='username';
-- 或者重命名用户来改变host
RENAME USER 'username'@'%' TO 'username'@'192.168.1.100';
-- 刷新权限
FLUSH PRIVILEGES;除了MySQL本身的配置,您还可以使用系统防火墙来限制访问:
# 允许特定IP访问3306端口
iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.100 -j ACCEPT
# 拒绝其他所有IP访问3306端口
iptables -A INPUT -p tcp --dport 3306 -j DROP
# 保存规则(根据系统不同)
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables在MySQL配置文件(my.cnf或my.ini)中添加绑定地址:
[mysqld]
bind-address = 192.168.1.100这将使MySQL只监听指定IP的请求。
没有搜到相关的沙龙