【问题标题】:Issue getting docker to access my database properly with wordpress问题让 docker 使用 wordpress 正确访问我的数据库
【发布时间】:2026-02-13 11:40:01
【问题描述】:

我是 docker 新手,但我正在尝试设置一个本地测试环境来玩一些 wordpress 的东西。

所以我去了 docker 站点并提取了一个默认的 docker .yml 文件,了解如何轻松运行它。

我只做了几处更改,但大多数情况下这是一个直截了当的文档。

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql2
     restart: always
     ports:
         - "3306:3306"
     environment:
       MYSQL_ROOT_PASSWORD: somerootwordpresspw
       MYSQL_DATABASE: testdatabase
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     volumes:
         - ./WP-TEST/:/var/www/html/
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

当我使用上面的 .yml 文件运行 docker-compose up 时,我看到了这个错误:

MySQL "CREATE DATABASE" Error: Access denied for user 'wordpress'@'%' to database 'wordpress'

我觉得奇怪,因为我将数据库命名为 testdatabase,那么它为什么要尝试创建一个名为 wordpress 的数据库?

当我连接 SQL Pro 时,我可以看到 testdatabase,但根据控制台,它正在尝试创建 wordpress db。

如何让它连接到我的命名数据库,而不是一直无法创建 wordpress

【问题讨论】:

    标签: mysql wordpress docker docker-compose


    【解决方案1】:

    所以我想我明白了。

    真的很简单。在我的 .yml 文件的 wordpress 部分中,我需要包含 WP_DB_NAME: testdatabase

    通过这样做,它使用我命名的测试数据库将 wordpress 安装到。

    希望这对可能偶然发现此问题的人有所帮助。

    现在 .yml 文件如下所示:

    version: '3'
    
    services:
       db:
         image: mysql:5.7
         volumes:
           - db_data:/var/lib/mysql2
         restart: always
         ports:
             - "3306:3306"
         environment:
           MYSQL_ROOT_PASSWORD: somerootwordpresspw
           MYSQL_DATABASE: testdatabase
           MYSQL_USER: wordpress
           MYSQL_PASSWORD: wordpress
    
       wordpress:
         volumes:
             - ./WP-TEST/:/var/www/html/
         depends_on:
           - db
         image: wordpress:latest
         ports:
           - "80:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_NAME: testdatabase
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
    volumes:
        db_data:
    

    【讨论】: