答案:限制MySQL远程访问需配置bind-address为127.0.0.1,管理用户Host权限仅限本地,防火墙禁用3306端口。

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 mysql
2. 管理用户远程访问权限
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 权限和防火墙规则,能有效防止未经授权的远程访问,提升数据库安全性。









