Linux下如何关闭mysql的3306端口本地访问
封面图
•
2025-11-18
•
MySQL
390
0
0
0
在 Linux 系统下,如果你希望**关闭 MySQL 的 3306 端口的本地访问**(即禁止本机通过 `127.0.0.1` 或 `localhost` 访问 MySQL),可以通过以下几种方式实现: --- ## ✅ 方法一:修改 MySQL 配置文件(推荐) MySQL 默认监听的是 `0.0.0.0`,这意味着它会监听所有网络接口。如果只想允许本地访问,可以限制只监听 `127.0.0.1`。 ### 步骤如下: 1. **编辑 MySQL 配置文件** ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` 或者根据你的系统可能路径不同,比如: ```bash sudo nano /etc/my.cnf ``` 2. **找到并修改 `bind-address` 行** 如果有以下内容: ```ini bind-address = 0.0.0.0 ``` 修改为: ```ini bind-address = 127.0.0.1 ``` 这样 MySQL 只监听本地回环地址,其他 IP 无法访问。 3. **保存并退出编辑器** 4. **重启 MySQL 服务** ```bash sudo systemctl restart mysql ``` --- ## ✅ 方法二:使用防火墙(iptables 或 ufw)阻止本地访问 如果你不想修改 MySQL 配置,也可以通过防火墙规则来**阻止本地访问 3306 端口**。 ### 使用 `ufw`(Ubuntu/Debian) 1. **允许本地访问(可选)** ```bash sudo ufw allow from 127.0.0.1 to any port 3306 ``` 2. **拒绝其他来源的访问** ```bash sudo ufw deny from any to any port 3306 ``` 3. **启用防火墙** ```bash sudo ufw enable ``` > ⚠️ 注意:这可能会导致你无法从其他机器访问 MySQL,如果你只是想**阻止本地访问**,建议使用方法一更安全。 --- ## ✅ 方法三:使用 `iptables` 阻止本地访问 ```bash sudo iptables -A INPUT -s 127.0.0.1 -p tcp --dport 3306 -j DROP ``` > 这条命令会**阻止本地(127.0.0.1)访问 3306 端口**,但不会影响远程访问。 > 📌 建议将这条规则写入 `/etc/iptables/rules.v4` 或使用 `iptables-persistent` 永久保存。 --- ## ✅ 方法四:使用 `mysql` 用户权限控制(不推荐) 你可以通过 MySQL 的用户权限设置,限制某些用户只能从特定 IP 登录。 例如: ```sql -- 创建一个仅允许本地登录的用户 CREATE USER 'local_user'@'127.0.0.1' IDENTIFIED BY 'password'; -- 授权 GRANT ALL PRIVILEGES ON *.* TO 'local_user'@'127.0.0.1'; FLUSH PRIVILEGES; ``` 这样只有从 `127.0.0.1` 登录的用户才能访问数据库。 --- ## ✅ 总结 | 方法 | 是否推荐 | 说明 | |------|----------|------| | 修改 `bind-address` | ✅ 推荐 | 最直接、最安全的方式 | | 防火墙规则 | ⚠️ 警告 | 可能影响远程访问,需谨慎 | | iptables | ⚠️ 警告 | 需要持久化配置 | | 用户权限控制 | ⚠️ 不推荐 | 只能限制用户,不能完全阻止访问 | --- ## 🔍 检查是否生效 你可以使用以下命令检查 3306 端口是否监听: ```bash netstat -tuln | grep 3306 ``` 或者: ```bash ss -tuln | grep 3306 ``` 如果看到 `127.0.0.1:3306`,说明已经只监听本地了。 --- 如你有具体需求(如只允许某个 IP 访问、禁止本地访问等),欢迎继续提问!
上一篇:
mysql数据库分表及实现
下一篇:
CentOs中iptables配置允许mysql远程访问
标题录入,一次不能超过6条
留言
评论