如何从 wordpress docker 建立数据库连接

Posted

技术标签:

【中文标题】如何从 wordpress docker 建立数据库连接【英文标题】:How to establish database connection from wordpress docker 【发布时间】:2019-08-20 11:33:13 【问题描述】:

我尝试使用本指南运行 docker compose wordpress:https://docs.docker.com/compose/wordpress/

这是指南中描述的 yaml 文件:

version: '3.3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
       WORDPRESS_DEBUG: "true"
volumes:
    db_data: 

在我运行后

"docker-compose up -d" 

命令,我在浏览器中转到“http://localhost:8000/”并获得带有“建立数据库连接时出错”的白页。根据指南,wordpress 应该已经向我展示了 5 分钟的安装。当我使用 wordpress debug true 运行容器时,会显示以下错误消息:

Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /var/www/html/wp-includes/wp-db.php on line 1612

连接被拒绝

我现在用

docker exec it container_id /bin/bash 

并输入“mysql -p”。现在我使用 docker compose 文件中的 MYSQL_ROOT_PASSWORD 但我被拒绝访问(“用户'root'@'localhost'的访问被拒绝(使用密码:YES)”)

我不确定我之前做了什么,但在某些时候它起作用了,我列出了数据库和 mysql.users 以及 db 和用户。

所以我什至不知道,这里的问题是什么......

为什么我不能再以 root 身份访问?有谁知道该怎么做?

编辑:将端口改回 3306,我尝试 3308 只是为了看看这是否可能是端口问题

【问题讨论】:

我认为你应该使用db:3306 而不是3308 嘿tgogos,我已经试过了。刚刚检查这是否不是端口问题。 "Access denied for user 'root'@'localhost' (using password: YES)" 意味着您没有通过本地 unix socker 访问的权限...您是否尝试过“mysql -p -h 127.0.0.1 ..." ??这将显示您是否可以通过本地计算机上的 tcp/ip 访问 【参考方案1】:

我找到了另一个帖子,他们使用了这个 yaml。仍然不确定为什么会这样,但确实如此。

version: '3.3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - 8000:80
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data: 

【讨论】:

以上是关于如何从 wordpress docker 建立数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

基于Docker快速搭建wordpress博客

Docker Compose创建Wordpress应用

Docker学习四-Docker-compose的简单应用

如何修复在“localhost/wordpress”上建立数据库连接时出错

从 localhost 开发站点时更改了 WordPress 地址 (URL) 和站点地址 (URL)。现在,建立数据库连接时出错

用docker快速搭建wordpress博客