首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker / WSL / Symfony / MySQL - SQLSTATE[HY000] [2002]连接被拒绝

Docker / WSL / Symfony / MySQL - SQLSTATE[HY000] [2002]连接被拒绝
EN

Stack Overflow用户
提问于 2021-07-21 13:22:02
回答 2查看 710关注 0票数 1

我正在使用WSL 2,并试图通过我的坞应用程序容器(Symfony 4.4)连接到我的MySQL数据库。关于这个问题的其他帖子并没有帮助我找到解决办法,所以我现在就问你。请不要犹豫,让我添加其他文件,可以帮助我们获得更多关于这个问题的信息。

所有容器表面上运行良好(这里的细节)。

然后,我使用docker exec -it app-backend-fairfair bash进入我的应用程序容器,成功地运行composer install。它工作正常(这里的细节)。

最后,我运行了php bin/console doctrine:database:create,但是即使我在本地主机上拥有完全的数据库访问权限:8081,它也不能工作,我仍然会得到SQLSTATE[HY000] [2002] Connection refused错误。完整的错误消息这里

文件使用

这是我的码头.env文件:

代码语言:javascript
复制
SERVER_PORT=8080
ADMINER_PORT=8081

# name and group of your user
HOST_USER=shamzic

# Path to store data in your machine
MYSQL_VOLUME=/var/docker-volume/fairfair/database

# Password for root user
MYSQL_ROOT_PASSWORD=root

在.env symfony容器文件中:

代码语言:javascript
复制
...

DATABASE_URL=mysql://root:root@db:3306/main
...

对接者-Compose.yaml文件:

代码语言:javascript
复制
version: '3.2'

services:
    app-backend-fairfair:
        build:
            context: .
            dockerfile: app.dockerfile
            args:
                USER: ${HOST_USER}
        volumes:
            - '../../:/usr/src/backend-fairfair'
        networks:
            - app-backend-fairfair
            - db
        restart: on-failure
        container_name: app-backend-fairfair
    server-backend-fairfair:
        build:
            context: .
            dockerfile: server.dockerfile
        networks:
            - app-backend-fairfair
        ports:
            - ${SERVER_PORT}:80
        restart: on-failure
        depends_on:
            - app-backend-fairfair
        container_name: server-backend-fairfair
    db:
        image: mysql:8.0
        build:
            context: .
            dockerfile: database.dockerfile
        volumes:
            - ${MYSQL_VOLUME}:/var/lib/mysql
        ports:
            - 3306:3306
        environment:
            MYSQL_ROOT_HOST: '%'
            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
        networks:
            - db
        restart: on-failure
        container_name: db
    adminer:
        build:
            context: .
            dockerfile: adminer.dockerfile
        ports:
            - ${ADMINER_PORT}:8080
        restart: on-failure
        networks:
            - db
        depends_on:
            - db
        container_name: adminer
networks:
    app-backend-fairfair:
        name: app-backend-fairfair
    db:
        name: db

我确信这可以通过一些改变来解决.也许在码头-复合. file文件里?

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-27 14:02:10

谢谢你的回答。我的问题只是因为.env文件找不到正确的数据库路径.好了!

票数 0
EN

Stack Overflow用户

发布于 2021-07-22 11:08:25

您的配置看起来很好,应该可以按预期工作。

错误消息还指示网络设置正常工作,可以解析db主机,但它不接受连接。很可能数据库还没有准备好接受连接。仅仅等待它完成初始化就足够了。

因此,通过检查服务的日志输出,验证mysql服务已经完成初始化:

代码语言:javascript
复制
docker-compose logs db

然后验证它是否接受本地接口/unix套接字上的连接:

代码语言:javascript
复制
docker-compose exec db mysql -u root -proot

接下来,您可以验证mysql是否接受其(从容器的角度来看)外部接口上的连接:

代码语言:javascript
复制
docker-compose run --rm db mysql -h db -u root -proot
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68470312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档