linux docker mysql 只允许特定的ip 192.168.1.18能连接到192.168.1.25的数据库,其他的电脑比如192.168.1.20不允许连接如何解决
时间: 2024-10-20 13:09:37 浏览: 25
在Linux环境中,如果想要限制Docker容器内的MySQL服务只允许来自特定IP(例如192.168.1.18)的访问,可以按照以下步骤操作:
1. **配置MySQL**:
- 登录到运行MySQL的Docker容器内,通常通过`docker exec -it [container_name_or_id] bash`命令进入容器。
- 打开MySQL的my.cnf配置文件,它通常位于 `/etc/mysql/my.cnf` 或 `/etc/mysql/conf.d/local.cnf`(取决于镜像)。如果没有找到,创建一个新的配置文件。
2. **添加安全规则**:
- 在配置文件中添加行 `bind-address = 127.0.0.1`,这会将MySQL绑定到本地主机地址,使其仅对本机可用。
- 然后添加`bind-address = <your_ip>`(替换为192.168.1.18),允许指定的IP连接。对于多个IP,可以使用逗号分隔。
```ini
[mysqld]
bind-address = 127.0.0.1, 192.168.1.18
```
3. **重启MySQL服务**:
- 保存并退出编辑器,然后使用`service mysql restart`或`sudo systemctl restart mysql`来重启MySQL服务,使得新的设置生效。
4. **防火墙策略**:
- 如果你的系统有防火墙(如iptables或firewalld),还需要确保相应的规则阻止其他IP的入站连接。可以在容器网络层面实现,比如使用UFW或在Docker网络配置里设置端口映射和访问控制。
```bash
# 使用UFW阻止所有除192.168.1.18之外的入站连接
ufw allow from 192.168.1.18 to any port 3306/tcp
ufw deny incoming on mysql
ufw reload
```
阅读全文