所以我对 docker 真的很陌生,我可能在这里错误地使用它,但它使启动 mysql 数据库非常容易,所以这就是为什么我想试一试而不是在我的远程(在 LAN)机器上安装实例。
所以我想从另一台/远程机器访问 MariaDB 数据库,但是在我看来,它似乎在提供过时的信息,(甚至官方的 mariaDB 文档)没有提供正确的信息,我尝试了他们所说的,我相信那只是用于从运行容器的同一台机器访问容器。我看到的任何文章或 *exchange 答案都告诉您进入容器的 bash 终端,然后更改/etc/msql/my.cnf
为拥有bind_address=0.0.0.0
,这已过时,因为bind_address
即使在 my.cnf 中也不再存在,/etc/mysql/mariadb.conf.d/50-server.cnf
并且其中有一行说明
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
我也找不到对我可以设置的环境变量的任何引用,以便允许我远程访问它,所以我真的不知道在哪里查看如何更改配置以允许我访问数据库我的网络。
是的,我有一个允许远程连接的用户设置。任何和所有的帮助表示赞赏。
在旁注中,改变这一点似乎真的很难,所以它让我相信这是不好的做法或应该避免,然后这让我相信我理解 docker 错误,我认为 docker 应该允许你运行不相互交互的软件小实例,所以如果一个实例搞砸了,其余的都不会,但为什么他们如此打算不允许远程连接?
danblack已经回答了您的问题,但我想指出您可能不应该让您的容器与主机系统通信。在我看来,你怀疑这是一种不好的做法是正确的。
你想做什么?手动连接数据库?这样做很容易。跑:
或者您希望应用程序使用 MariaDB?在这种情况下,应用程序应该在容器中运行。MariaDB 容器和应用程序容器应该访问同一个Docker 网络。对于 Docker 初学者来说,这可能有点棘手,但您可以使用Docker Compose自动创建和维护容器。
监听远程连接的配置在容器之外。
容器默认配置
mariadb
监听容器内的所有接口。docker/podman
-p
or-P
需要将这些接口暴露给运行容器的主机。如果需要外部连接来侦听非本地 IP(的一部分
-p
,默认情况下将绑定到所有接口)。此外,防火墙和路由配置是必需的,可能不是默认配置。