使用Docker时连接Mariadb和WordPress出现连接错误问题

8
我有一个docker-compose,在其中有两个容器,一个是mariadb,另一个是wordpress。
问题:
我遇到了连接失败的问题,似乎是用户失去连接并无法进行身份验证。
wp-mysql | 2019-08-09 13:21:16 18 [Warning] Aborted connection 18 to db: 'unconnected' user: 'unauthenticated' host: '172.31.0.3' (This connection closed normally without authentication)
情况:
当我访问http://localhost:8010时,wordpress服务可用,但连接数据库时出现错误。
docker-compose.yml...
version: '3'

services:
  db:
    container_name: wp-mysql
    image: mariadb
    volumes:
       - $PWD/data:/var/lib/mysql
    environment:
       MYSQL_ROOT_PASSWORD: 12345678
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
    ports:
       - "3307:3306"
    networks:
       - my_net
    restart: on-failure

  wp:
    depends_on:
       - db
    container_name: wp-web
    volumes:
       - "$PWD/html:/var/www/html"
    image: wordpress
    ports:
       - "8010:80"
    environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
    networks:
       - my_net

networks:
  my_net:

错误:

wp-mysql | 2019-08-09 13:21:16 18 [警告] 中止连接 18 到 db:> 'unconnected' 用户:'unauthenticated' 主机:'172.31.0.3' (此连接>正常关闭但没有进行身份验证)

配置错误在哪里?

为什么WordPress容器无法使用在Mariadb容器环境中创建的用户?


如果这个错误只在Linux机器上出现,而不是在Mac OS上出现,那么很可能是我遇到的同样问题,我通过切换到mysql:5.7镜像而不是使用mariadb镜像来解决了这个问题。 - Naveen
我曾经遇到过同样的问题。在我的情况下,我是在 Windows 上运行 Ubuntu。我已经将卷配置到了 Windows 文件系统中。然后我改变为 Ubuntu 文件系统,问题得到了解决。 - Anderson Lira
3个回答

10

问题终于得到解决了。

在转了一圈并得到用户@JackNavaRow的帮助后,问题终于被解决了。

解决方法很简单,只需要重启系统并删除卷即可。

重新获取容器并且一切都正常了。

我在这里分享出来,以防他人遇到此问题时不必再绕路。


请问,您能详细说明如何解决这个问题吗?我没有理解清楚。 - rmmariano
1
哈哈,不需要重启。但是仅仅移除音量并重新开始也能解决问题。时代变了啊。。 - Martin
运行 docker-compose down -v 解决了我的问题。 - Alqio

9

可能是由于意外关闭导致数据库文件损坏,您可以删除数据库卷。

警告:此操作将删除所有数据库数据

您可以使用docker-compose down -v命令删除卷,然后执行docker-compose up -d命令将其启动。

在您的情况下,您没有使用卷来存储数据库数据,您可以删除数据并重试。

rm -rf $PWD/data


0

我在我的docker-compose.yml中更改了音量。这是为了在试验某些东西时保留数据。

volumes:
    - ./data/mysql:/var/lib/mysql

转换为以下内容

volumes:
    - ./data/mysql1:/var/lib/mysql

出于某种原因,在执行此操作后我遇到了这个错误。为了解决这个错误,我运行了docker-compose down命令,然后删除了mysql1文件夹。然后重新运行docker-compose up命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接