【问题标题】:Can't connect to mysql in docker container from phpbb无法从 phpbb 连接到 docker 容器中的 mysql
【发布时间】:2017-09-19 04:39:45
【问题描述】:

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

但是当我尝试连接到我的 phpbb 实例时,我收到了这个错误:

一般错误 SQL ERROR [mysqli]

没有这样的文件或目录 [2002]

获取此页面时发生 sql 错误。请联系 如果此问题仍然存在,请管理员。

phpbb 配置如下:

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

找不到的文件或目录是否与 mysql.so 有关?如果是这样,我将在 docker configs 的哪里设置它?

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

为清楚起见进行编辑:

我的 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

【问题讨论】:

  • 你是如何运行容器的?有多个容器吗?
  • @Sergiu - 这是我的开发机器,所以我使用 'docker compose up' 运行它。为了清楚起见,我在上面发布了我的 docker-compose.yml。

标签: mysql docker nginx phpbb phpbb3


【解决方案1】:

您的连接不工作的原因是使用了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';

【讨论】:

  • 谢谢!我运行 docker inspect 并看到主机 ip 为 0.0.0.0,当我尝试使用时,我得到“连接被拒绝 [2002]”。否则我还没有使用服务。这是我的开发机器,也是我第一次尝试 docker,我需要服务吗?我已经在上面发布了我的 docker-composer.yml,希望有一个简单的方法...感谢您的帮助!!
【解决方案2】:

运行 'docker inspect containername' 后,我注意到下面的 IP 地址: NetworkSettings.Networks.bridge.gateway。

当我尝试时,它成功了!

【讨论】:

    猜你喜欢
    • 2019-04-01
    • 2019-07-22
    • 2016-04-26
    • 2016-07-22
    • 2019-09-04
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2020-12-30
    相关资源
    最近更新 更多