容器mariadb只允许主机访问

做一个产品,如果你的数据库允许Internet访问的话会有安全问题。

所以我们的数据库需要限制访问的流量

如果是数据库运行在主机上,那么
bind-address = 127.0.0.1
就可以了

直接用数据库的配置文件,限制只能使用主机访问

但我们用的是容器来跑一个数据库话

想法1:设置成bind-address = 127.0.0.1的话

其他在此主机上的容器会报错

想法2: 设置成bind-address = 192.168.111.73(主机IP)

结果是其他在同一网段的主机也可以访问数据库

The bind-address setting tells MySQL whether it can listen on a TCP socket for new connections. We have three basic ways to configure bind-address:

MySQL can bind to no networks (connect over localhost only, e.g. a unix socket)
MySQL can bind to all networks (0.0.0.0)
MySQL can bind to a specific network, e.g. a public network that the whole internet can reach, or a private network that can only be reached from within a data center

解决方式:
配置文件不行了,用Iptables来限制访问

通过iptables限制3306端口的访问(只允许主机IP192.168.111.73),其他IP都禁止访问
iptables -I INPUT -p tcp --dport 3306 -j DROP
iptables -I INPUT -s 192.168.111.73 -p tcp --dport 3306 -j ACCEPT

结果:
容器数据库本身可以访问数据库,其他在主机上的容器也可以访问数据库,其他主机不能访问数据库。达到我的目标了
(容器都是用的host网络模式)

你可能感兴趣的:(容器mariadb只允许主机访问)