容器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/mysql配置允许远程访问方式

mariadb 作为 docker 容器 - 主机挂载绑定上的启动损坏

无法通过 Kubernetes 集群中的主机名连接到 MariaDB

主机文件如何只允许一个域名

不允许主机“localhost”连接到此 MariaDB 服务器

只查看正在运行的容器和docker主机做了哪些端口映射的命令