无法连接到使用带有PHP PDO的Docker运行的本地MariaDB
本文介绍了无法连接到使用带有PHP PDO的Docker运行的本地MariaDB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个本地的Docker Compose堆栈,在我的机器上运行着MariaDB、PHP-fpm和Nginx,用于本地开发。
我可以在我的浏览器上成功地访问http://localhost:8080/上的NGINX服务的网页。
我还可以在主机127.0.0.1、端口8889上使用本地GUIDB浏览器TablePlus成功连接到数据库。它可以使用用户root
和密码root
(但奇怪的是,不能使用我在Docker组合中捕获的MySQL_USER、MYSQL_PASSWORD环境变量设置的任何其他用户)。
无论如何,当我尝试使用以下PHP代码连接到PHP/PDO时,相同的凭据:
...我收到Error: SQLSTATE[HY000] [2002] No such file or directory
编辑:当我使用时:
...我收到Error: SQLSTATE[HY000] [2002] Connection refused
为什么?
(这是我的Docker撰写文件:
)
推荐答案
如@danblack所回答,因为到DB的连接是从一个docker容器内部到另一个容器:
容器之间的连接始终使用未重新映射的端口。因此,到DB容器的连接需要使用内部的MariaDB标准端口3306,而不是重新映射的公开的8889端口。
数据库的主机名必须是数据库容器名(在本例中, MariaDB容器名称
mariadb-10.5
),而不是127.0.0.1
或localhost
。
因此,总而言之,PHP/PDO连接对象变为:
这篇关于无法连接到使用带有PHP PDO的Docker运行的本地MariaDB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!