Docker 容器中 MariaDB 的超时错误

Docker 容器中 MariaDB 的超时错误

我有一个带有 Docker 的 ArchLinux 安装,玛拉雅数据库在容器中运行。

现在,当我尝试连接到数据库时,我得到以下欧元:MySQL said: Can't connect to MySQL server on '$mydomain' (4)

为了使它可用,我做了以下事情:

  • 创建 root 用户并授予%访问权限。
  • 已安装文件夹,custom.cnf内容如下:

    [mysqld]
    bind-address=0.0.0.0
    
  • 暴露3306:3306docker run
  • 配置的UFW ufw status | grep 3306

    3306                       ALLOW       Anywhere
    3306 (v6)                  ALLOW       Anywhere (v6)
    

我不确定我错过了什么。我可以从容器内部使用给定的密码进行连接,但不能从本地主机进行连接。

提前致谢!

编辑:我设法通过容器的内部 IP 从另一个容器进行连接,所以我认为它在主机上可以正常工作?也许是防火墙问题(但这没有意义,因为禁用 ufw 和 iptables 没有任何帮助)。

答案1

这是 Docker 的问题,添加--net=host即可docker run修复。请参阅#13914了解更多信息。

答案2

如果您正在使用 docker compose,您可以将其添加到 docker-compose.yml 文件中,查看问题是否仍然存在。

网络模式:“主机”

答案3

这个解决方案更好,并且没有安全问题:https://github.com/MariaDB/mariadb-docker/issues/113#issuecomment-380868523

       command: [
            '--wait_timeout=28800',
        ]

相关内容