我有一个带有 Docker 的 ArchLinux 安装,玛拉雅数据库在容器中运行。
现在,当我尝试连接到数据库时,我得到以下欧元:MySQL said: Can't connect to MySQL server on '$mydomain' (4)
。
为了使它可用,我做了以下事情:
- 创建 root 用户并授予
%
访问权限。 已安装文件夹,
custom.cnf
内容如下:[mysqld] bind-address=0.0.0.0
- 暴露
3306:3306
于docker 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',
]