Docker 和 wordpress - 建立数据库连接时出错

Docker & wordpress - Error establishing a database connection

提问人:Cqfd83 提问时间:10/3/2023 最后编辑:Cqfd83 更新时间:10/9/2023 访问量:95

问:

我发现许多关于我的问题已解决的主题,但我仍然无法解决它。这可能是另一个问题,或者很可能是我没有设法弄清楚出了什么问题。经过数周的测试,我确实尝试公开寻求一些支持。

我正在尝试在我的个人服务器(Ubuntu 22.04)上设置一个wordpress。

下面是我的docker-compose文件:


version: '3'

services:
  wp-db:
    container_name: wp-mysql_container
    image: mysql:latest
    restart: unless-stopped
    environment:
      TZ: "Europe/Paris"
      MYSQL_ROOT_PASSWORD: ZZZZ
      MYSQL_USER: mywpuser
      MYSQL_DATABASE: mywpdb
      MYSQL_PASSWORD: XXXX
      MYSQL_TCP_PORT: 3307
    volumes:
      - ./wp-db_data:/var/lib/mysql
    ports:
      - 3307:3307
  
  wordpress:
    container_name: wordpress_container
    image: wordpress:latest
    restart: always
    depends_on:
      - wp-db
    ports:
      - 8082:80
    environment:
      WORDPRESS_DB_HOST: wp_db:3307
      WORDPRESS_DB_USER: mywpuser
      WORDPRESS_DB_PASSWORD: XXXX
      WORDPRESS_DB_NAME: mywpdb
    volumes:
      - ./wordpress:/var/www/html
      - ./wordpress_logs:/var/log/apache2

  wp-phpmyadmin:
    container_name: wp-phpmyadmin_container
    image: phpmyadmin:latest
    depends_on:
      - wp-db
    links: 
      - wp-db:wp-db
    ports: 
      - 8083:80
    environment:
      UPLOAD_LIMIT: 100000000
    restart: unless-stopped

volumes:
  wordpress:
  wordpress_logs:
  wp-db:
  wp-db_data:

当我尝试访问phpmyadmin的wordpress时,我收到错误消息“ 数据库错误:建立数据库连接时出错”

任何帮助将不胜感激,谢谢

我试图关注这些相关主题:

在许多其他人中...

编辑: 2023/10/09 现在我的 docker-compose 就是这样并且正在工作:

version: '3.8'
services:
  wordpress:
    container_name: wordpress_container
    image: wordpress:latest
    restart: always
    ports:
      - 8082:80
    environment:
      WORDPRESS_DB_HOST: wp_db_mysql
      WORDPRESS_DB_USER: qqqqqqqqqqq
      WORDPRESS_DB_PASSWORD: aaaaaaaaaaaaaa
      WORDPRESS_DB_NAME: yyyyyyyyyyy
    volumes:
      - wp_data:/var/www/htmlqsdgjuytac
  wp_db_mysql:
    container_name: wp_mysql_container
    image: mysql:5.7
    restart: always
    ports:
      - 3307:3307
    environment:
      MYSQL_DATABASE: yyyyyyyyyyy
      MYSQL_ROOT_PASSWORD: bbbbbbbbbb
      MYSQL_USER: qqqqqqqqqqq
      MYSQL_PASSWORD: aaaaaaaaaaaaaa
    volumes:
      - db_data:/var/lib/mysql
  wp_phpmyadmin:
    container_name: wp_phpmyadmin_container
    image: phpmyadmin/phpmyadmin:latest
    depends_on:
      - wp_db_mysql
    ports:
      - 8083:80
    restart: always
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3307
      PMA_ARBITRARY: 1
volumes:
  wp_data:
  db_data:

但是,当我尝试更改MYSQL_PASSWORD将所有“aaaaaaaa”更改为“nlkjazjeuzagq”时。我再次收到错误消息。 我试过了:

  • docker-compose up -d
  • docker-compose down & & docker image prune -af 后跟 docker-compose up -d。

显然,我不敢相信“aaaaaaaaaa”是唯一可接受的密码,但我无法重新初始化它。

mysql wordpress docker-compose

评论

1赞 David Maze 10/3/2023
标准的MySQL端口号是3306,而不是3307。将端口号更改为 3306 在文件中出现的任何位置是否有帮助?(第一个数字可以不同,但不在此特定设置中使用。如果没有,错误消息中是否还有其他内容可能表明它如何无法连接?ports:
0赞 Cqfd83 10/3/2023
谢谢大卫。3306 已用于另一项服务,即 LAMP 服务器。我不知道我是否应该有“端口:3307:3307”或端口:“3307:3306”tbh。我有点不愿意杀死我的 LAMP(还不确定如何)将所有东西传递给 3306。我不知道如何/在哪里获取有关我的错误消息的更多详细信息。
0赞 David Maze 10/3/2023
ports: ['3307:3306']将不冲突的主机端口 3307 映射到容器内的标准数据库端口 3306。由于每个容器都具有隔离的网络环境,因此即使主机上有其他类似的数据库容器或数据库,容器也可以使用标准端口。
0赞 Cqfd83 10/3/2023
我保留了“MYSQL_TCP_PORT:3307”,更改为“端口:- 3307:3306”,并更改了“WORDPRESS_DB_HOST:wp_db”。这是你心目中的改变吗?不幸的是,我仍然收到相同的错误消息。

答:

0赞 rd1218 10/8/2023 #1

我在这里也有同样的旅程,我的 WP 刚刚开始工作。请参阅下面的代码。

请注意,臭名昭著的消息“建立数据库连接时出错”仍可能发生:即使显示“完成”,如果您立即转到浏览器,您也会收到该消息。就我而言,我必须等待 ~5 秒,然后它接受连接(在此之前,会出现消息)。docker

另外,我注意到人们建议改用,所以我建议你改变它(在我看来,其他版本(8)应用于Oracle企业系统)。mysql:5.7

version: '3.8'
services:
  wordpress:
    container_name: wordpress
    image: wordpress:latest
    restart: always
    ports:
      - 9010:80
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: qqqqqqqqqqq
      WORDPRESS_DB_PASSWORD: aaaaaaaaaaaaaa
      WORDPRESS_DB_NAME: yyyyyyyyyyy
    volumes:
      - wp_data:/var/www/html
  mysql:
    container_name: mysqlWordpress
    image: mysql:5.7
    restart: always
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: yyyyyyyyyyy
      MYSQL_ROOT_PASSWORD: bbbbbbbbbb
      MYSQL_USER: qqqqqqqqqqq
      MYSQL_PASSWORD: aaaaaaaaaaaaaa
    volumes:
      - db_data:/var/lib/mysql
  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin/phpmyadmin:latest
    depends_on:
      - mysql
    ports:
      - 9012:80
    restart: always
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3307
      PMA_ARBITRARY: 1
volumes:
  wp_data:
  db_data:

评论

0赞 Cqfd83 10/9/2023
非常感谢rd1218。我确实设法使用了您的代码并且它起作用了。现在我不知道如何更改密码(请参阅我的编辑)。
0赞 rd1218 10/9/2023
也许这是另一个问题的情况?在我看来,原来的答案似乎是正确的(应该标记为答案)。无论如何,如果您无法使用初始容器,只需将其删除 () 并继续使用新容器即可。docker rm -f <id>
0赞 Cqfd83 10/10/2023
事实上,phpmyadmin仍然拒绝连接到数据库。我不知道这是映射连接的问题(我对此表示怀疑)还是登录问题,可能与我无法更改 mysql 密码和用户这一事实有关......
0赞 rd1218 10/11/2023
请删除两者并尝试一下。让我知道,然后我会检查更新答案。作为参考,这是我的工作命令:.PMA_HOST: mysqlPMA_PORT: 3307docker container run -d --name phpMyAdmin --restart always -e PMA_ARBITRARY=1 -p 9000:80 --link mysql phpmyadmin/phpmyadmin:latest
0赞 Cqfd83 10/14/2023
rd1218,对不起回复晚了,我正在旅行。事实上,删除PMA_PORT是解决方案!祝贺。不过,我仍然无法更改您的登录参数。我相信我应该消灭一切,而不仅仅是杀死容器,但我没有找到正确的命令