首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从phpbb连接到docker容器中的mysql

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

Stack Overflow用户
提问于 2017-09-17 10:46:45
回答 2查看 1K关注 0票数 2

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

但是,当我试图连接到phpbb实例时,会得到以下错误:

一般错误SQL错误mysqli 2002年没有这类文件或目录 获取此页时发生sql错误。如果此问题仍然存在,请与管理员联系。

phpbb配置如下所示:

代码语言:javascript
复制
$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'xxxxx_xxxx';
$dbuser = 'xxxxxxxxx';
$dbpasswd = 'xxxxxx';

它找不到的文件或目录会与mysql.so相关吗?如果是这样的话,我该把这个放在码头的什么地方呢?

难道没人知道发生了什么事吗?

清晰的编辑:

我的docker-compose.yml看起来如下所示,我使用的是“docker-组合”来运行它。

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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2017-09-17 13:49:16

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

现在使用使用localhost:3306的图形用户界面,这是因为您将停靠端口转发到了主机端口。

但是您的phpbb容器-- localhost --引用容器本身,因此无法建立连接。所以有几种方法能让它起作用

主机IP

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

代码语言:javascript
复制
$dbhost = '192.168.0.102';

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

使用mysql容器名

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

代码语言:javascript
复制
$dbhost = 'mysqldb';

使用mysql服务名

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

代码语言:javascript
复制
version: '3'
services:
  mysqldb2:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
  phpbb:
    .....

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

代码语言:javascript
复制
$dbhost = 'mysqldb2';
票数 2
EN

Stack Overflow用户

发布于 2017-09-18 20:39:45

在运行“码头检查容器名称”之后,我注意到一个ip地址位于: NetworkSettings.Networks.bridge.gateway下面。

当我尝试的时候,它成功了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46263217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档