docker搭建的MySQL如何IP白名单访问3306端口
时间: 2024-11-25 18:16:26 浏览: 11
Docker搭建的MySQL通过IP白名单限制访问3306端口可以提高安全性,防止未经授权的连接。以下是步骤:
1. **创建Docker MySQL镜像**:
首先,确保你有一个基于官方MySQL镜像的Dockerfile,通常包含`FROM mysql:latest`这样的声明。
2. **配置MySQL**:
在Dockerfile中添加环境变量,例如:
```dockerfile
RUN echo "bind-address = 0.0.0.0" >> /etc/mysql/my.cnf
```
这将允许所有IP地址连接,但后续我们将仅允许特定IP列表。
3. **设置IP白名单**:
使用`EXPOSE`指令暴露3306端口,并在启动命令中指定只接受特定IP:
```dockerfile
EXPOSE 3306
CMD ["mysqld", "--bind-address=0.0.0.0", "-o", "bind-address=%s", "--skip-networking"]
```
当启动容器时,可以传递一个环境变量来指定允许的IP,如`MYSQL_HOST_WHITELIST=<your_ips>`。
4. **运行容器并限制访问**:
构建并运行容器,同时提供环境变量:
```bash
docker build -t your-mysql-image .
docker run -d --name your-mysql-container --network=host \
-e MYSQL_ROOT_PASSWORD=<your_password> \
-e MYSQL_HOST_WHITELIST=<comma-separated-allowed-ip-list> \
your-mysql-image
```
5. **更新主机防火墙**:
如果需要,可以在宿主机上设置防火墙规则,只允许来自已授权IP的流量访问容器的3306端口。
阅读全文