驱动程序中发生异常:SQLSTATE [HY000] [2002]连接被拒绝

时间:2018-09-25 15:37:54

标签: mysql symfony docker

我在使用docker和symfony访问mysql时遇到问题。

要尝试通过连接到php容器来查询mysql:

  

docker exec -it symfony_php bash

然后我执行以下命令:

  

bin / console原则:数据库:创建

这是我收到以下错误消息的地方:

  

驱动程序中发生异常:SQLSTATE [HY000] [2002]连接被拒绝

这是我的“ docker-compose.yml”的代码:

version: '3'
services:
    apache:
        container_name: symfony_apache
        build: .docker/apache
        ports:
            - "80:80"
        volumes:
            - .docker/config/vhosts:/etc/apache2/sites-enabled
            - .:/home/www/symfony
        depends_on:
          - php

    mysql:
        container_name: symfony_mysql
        image: mysql
        ports:
            - "3306:3306"   
        volumes:
            - .docker/data/db:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: sf4
            MYSQL_USER: sf4
            MYSQL_PASSWORD: sf4

    php:
        container_name: symfony_php
        build: .docker/php
        volumes:
            - .:/home/www/symfony
        depends_on:
            - mysql 

    phpmyadmin:
        container_name: symfony_phpmyadmin
        image: phpmyadmin/phpmyadmin
        ports:
            - "8080:80"
        environment:
            PMA_HOST: mysql
            PMA_PORT: 3306
        links:
            - mysql

这是我的.env代码:

  

DATABASE_URL = mysql:// root:root@127.0.0.1:3306 / s4

2 个答案:

答案 0 :(得分:1)

您是否尝试将内部标识符用作mysql主机?

DATABASE_URL=mysql://root:root@symfony_mysql:3306/s4
DATABASE_URL=mysql://root:root@mysql:3306/s4

我认为127.0.0.1无法在容器内正常工作。

您还可以尝试使用“外部” IP或URL,因为您已经暴露了端口3306。

答案 1 :(得分:0)

您正在尝试连接到root:root,但是您的用户是sf4。试试:

DATABASE_URL=mysql://sf4:sf4@127.0.0.1:3306/s4

也请尝试从命令行连接,以确保它确实有效。

编辑:刚刚意识到Connection refused正常运行时不是用户/密码错误。检查MySQL是否正在运行。