首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >限制 MySQL 服务只能被内网 `192.168.1.*` 网段的设备访问

限制 MySQL 服务只能被内网 `192.168.1.*` 网段的设备访问

原创
作者头像
JQ实验室
发布2025-08-06 15:51:43
发布2025-08-06 15:51:43
2550
举报
文章被收录于专栏:都到8月了都到8月了

1. 修改 MySQL 配置文件

MySQL 默认监听所有网络接口(0.0.0.0),需要将其绑定到内网 IP 地址或限制访问范围。

(1)编辑 MySQL 配置文件

找到 MySQL 的主配置文件,通常是 /etc/my.cnf/etc/mysql/my.cnf。使用文本编辑器打开:

代码语言:bash
复制
sudo vi /etc/my.cnf
(2)设置 bind-address

[mysqld] 段落中添加或修改 bind-address 参数,指定为内网 IP 地址(例如 192.168.1.x):

代码语言:ini
复制
[mysqld]
bind-address=192.168.1.x
  • 192.168.1.x 替换为你的服务器内网 IP 地址。
  • 如果你希望 MySQL 监听所有内网地址,可以使用 bind-address=0.0.0.0,然后通过用户权限限制访问范围。

保存并退出文件。

(3)重启 MySQL 服务

修改完成后,重启 MySQL 服务以使更改生效:

代码语言:bash
复制
sudo systemctl restart mysqld

2. 授权内网 IP 范围访问

通过 MySQL 用户权限管理,限制只有 192.168.1.* 网段的设备可以访问。

(1)登录 MySQL

使用管理员账户(如 root)登录 MySQL:

代码语言:bash
复制
mysql -u root -p
(2)创建或修改用户权限

假设你要允许内网 192.168.1.* 网段的设备访问,可以执行以下命令:

代码语言:sql
复制
CREATE USER 'your_user'@'192.168.1.%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'192.168.1.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

解释:

  • 'your_user'@'192.168.1.%':表示允许 your_user 用户从 192.168.1.* 网段的任何 IP 访问。
  • IDENTIFIED BY 'your_password':设置用户的密码。
  • GRANT ALL PRIVILEGES:授予用户对所有数据库和表的全部权限。
  • WITH GRANT OPTION:允许用户将权限授予其他用户。
  • FLUSH PRIVILEGES:刷新权限,使更改立即生效。
(3)删除不必要的远程访问权限

如果你之前创建了允许任意 IP(%)访问的用户,建议删除这些用户以提高安全性。例如:

代码语言:sql
复制
DROP USER 'your_user'@'%';

3. 防火墙限制

确保防火墙仅允许 192.168.1.* 网段访问 MySQL 的默认端口(3306)。

(1)使用 firewalld 限制访问

运行以下命令限制 192.168.1.* 网段访问 MySQL 端口:

代码语言:bash
复制
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --permanent --remove-port=3306/tcp
sudo firewall-cmd --reload
(2)验证防火墙规则

检查防火墙规则是否正确应用:

代码语言:bash
复制
sudo firewall-cmd --list-all

你应该看到类似以下内容:

代码语言:bash
复制
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
	rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept

4. 测试访问

完成上述配置后,进行以下测试:

(1)从内网设备访问

尝试从 192.168.1.* 网段内的设备连接 MySQL:

代码语言:bash
复制
mysql -u your_user -p -h 192.168.1.x

输入密码后,应该能够成功连接。

(2)从外网设备访问

尝试从外网或其他非 192.168.1.* 网段的设备连接 MySQL,应该会失败。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 修改 MySQL 配置文件
    • (1)编辑 MySQL 配置文件
    • (2)设置 bind-address
    • (3)重启 MySQL 服务
  • 2. 授权内网 IP 范围访问
    • (1)登录 MySQL
    • (2)创建或修改用户权限
    • (3)删除不必要的远程访问权限
  • 3. 防火墙限制
    • (1)使用 firewalld 限制访问
    • (2)验证防火墙规则
  • 4. 测试访问
    • (1)从内网设备访问
    • (2)从外网设备访问
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档