容器mariadb只允许主机访问
Posted 艾克的择天记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器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只允许主机访问的主要内容,如果未能解决你的问题,请参考以下文章
mariadb 作为 docker 容器 - 主机挂载绑定上的启动损坏
无法通过 Kubernetes 集群中的主机名连接到 MariaDB