MySQL 默认允许本地访问,但远程访问可能带来安全风险。若需限制远程访问,应从网络配置、用户权限和防火墙三方面入手,确保数据库服务只对可信来源开放。
1. 检查并绑定 MySQL 监听地址
MySQL 通过配置文件指定监听的 IP 地址。若允许远程连接,通常会设置为 0.0.0.0,表示监听所有网络接口。如需限制仅本地访问,应绑定到 127.0.0.1。
编辑 MySQL 配置文件(通常位于 /etc/mysql/my.cnf 或 /etc/my.cnf),找到 [mysqld] 段:
确保 bind-address = 127.0.0.1 若该行被注释或设为 0.0.0.0,修改后保存 重启 MySQL 服务使配置生效:systemctl restart mysql2. 管理用户远程访问权限
MySQL 用户账户包含主机字段,决定了可从哪些主机登录。可通过以下方式控制远程访问:
查看当前用户权限:SELECT User, Host FROM mysql.user; 删除或修改允许远程登录的用户,例如:DROP USER 'username'@'%';
或
UPDATE mysql.user SET Host='127.0.0.1' WHERE User='username' AND Host='%'; 执行 FLUSH PRIVILEGES; 刷新权限
建议仅创建本地访问用户(如 'user'@'localhost'),避免使用 '%' 通配符。
3. 使用防火墙限制访问端口
即使 MySQL 配置正确,系统防火墙也应作为第二道防线。
关闭对外暴露的 3306 端口 使用 iptables 示例:iptables -A INPUT -p tcp --dport 3306 -j DROP 若使用 ufw:
ufw deny 3306 仅允许可信 IP 访问(可选):
ufw allow from 192.168.1.100 to any port 3306
4. 禁用远程访问的额外建议
定期检查是否有异常用户或连接:SHOW PROCESSLIST; 关闭不必要的 MySQL 网络功能,如 skip-networking(完全禁用 TCP/IP 连接) 启用日志审计,监控登录行为 使用 SSL 加密连接(如必须开启远程访问)基本上就这些。合理配置 bind-address、用户 Host 权限和防火墙规则,能有效防止未经授权的远程访问,提升数据库安全性。
