gpt4 book ai didi

mysql - 无法从 phpbb 连接到 docker 容器中的 mysql

转载 作者:行者123 更新时间:2023-11-29 10:36:48 24 4
gpt4 key购买 nike

我的 Docker 容器运行良好,我可以使用图形 SQL 客户端连接到我的数据库。

但是,当我尝试连接到我的 phpbb 实例时,出现此错误:

General Error SQL ERROR [ mysqli ]

No such file or directory [2002]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.

phpbb 配置如下所示:

$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'xxxxx_xxxx';
$dbuser = 'xxxxxxxxx';
$dbpasswd = 'xxxxxx';

找不到的文件或目录是否与 mysql.so 相关?如果是这样,我应该在 docker 配置中的哪里设置它?

那么有人知道发生了什么事吗?

为清楚起见进行编辑:

我的 docker-compose.yml 如下所示,我使用“docker-compose up”运行它

php: 图片:webdevops/php-nginx 链接: - 数据库:数据库 卷: - “/home/xxx/code/mytest:/mytest-now” 端口: - 80:80 环境: - WEB_DOCUMENT_ROOT=/mytest/public

db:
image: mariadb:latest
volumes:
- "mytest-db:/var/lib/mysql"
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: dbname
MYSQL_USER: user
MYSQL_PASSWORD: password

最佳答案

您的连接无法正常工作的原因是使用了localhost。我假设您通过 docker-compose 或 docker 运行 mysql 容器,并将端口 3306 从主机映射到容器上的 3306。

现在使用图形 GUI,您使用 localhost:3306 并且它可以工作,这是因为您将 docker 端口转发到主机端口。

但是您的 phpbb 容器 localhost 指的是容器本身,因此无法建立连接。因此,有几种方法可以让它发挥作用

主机IP

使用您已映射端口3306的主机IP

$dbhost = '192.168.0.102';

这不是推荐的方法,因为当您连接到不同的网络时,您的主机 IP 会发生变化

使用mysql容器名称

使用 --name mysqldb 运行 mysql 容器,并在连接中使用此名称

$dbhost = 'mysqldb';

使用mysql服务名

如果您使用docker-compose并将mysql添加为服务

version: '3'
services:
mysqldb2:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=root
phpbb:
.....

然后您可以在连接设置中使用该服务名称

$dbhost = 'mysqldb2';

关于mysql - 无法从 phpbb 连接到 docker 容器中的 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com