限制MySQL远程登录需从用户权限、配置文件和防火墙三方面入手:1. 确保用户主机为localhost;2. 配置bind-address=127.0.0.1;3. 防火墙封锁3306端口。
在 MySQL 中限制用户远程登录,核心是控制用户的主机访问权限和网络配置。可以通过用户账户设置、MySQL 配置文件以
及操作系统防火墙等多层手段实现。
MySQL 用户账号由用户名和主机名共同定义。如果只允许本地登录,应避免创建允许远程连接的用户。
SELECT user, host FROM mysql.user;
ALTER USER 'root'@'%' IDENTIFIED BY '密码' ACCOUNT LOCK; 或删除远程 root 账户:
DROP USER 'root'@'%';
CREATE USER 'admin'@'localhost' IDENTIFIED BY '强密码';
这样该用户只能从本机登录,无法远程连接。
编辑 MySQL 配置文件(通常为 my.cnf 或 my.ini),限制 MySQL 只监听本地回环地址。
bind-address = 127.0.0.1
这表示 MySQL 仅接受来自本机的连接,拒绝外部 IP 访问。
sudo systemctl restart mysql(Linux 系统)
即使 MySQL 允许远程连接,也可以通过系统防火墙阻止外部访问 3306 端口。
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
定期运行以下命令检查是否存在可远程登录的账户:
SELECT user, host FROM mysql.user WHERE host != 'localhost' AND host != '127.0.0.1';
发现不必要的远程访问账户,及时删除或限制。
基本上就这些。通过合理设置用户权限、绑定本地地址和防火墙规则,能有效防止 MySQL 被远程登录滥用。