Docker MYSQL'连接被拒绝'

我第一次尝试了Docker。 得到了一个LEMP堆栈并运行,但是我无法连接到MYSQL数据库。 不在我的Symfony应用程序上,不在PHPMyAdmin上。 应用程序正在返回以下错误代码:

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

这是我的docker-compose.yml:

nginx: image: tutum/nginx ports: - "80:80" links: - phpfpm volumes: - ./nginx/default:/etc/nginx/sites-available/default - ./nginx/default:/etc/nginx/sites-enabled/default - ./logs/nginx-error.log:/var/log/nginx/error.log - ./logs/nginx-access.log:/var/log/nginx/access.log phpfpm: build: phpfpm/ ports: - "9000:9000" volumes: - ./public:/usr/share/nginx/html mysql: image: mariadb ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: admin phpmyadmin: image: phpmyadmin/phpmyadmin restart: always links: - mysql ports: - 8183:80 environment: MYSQL_USERNAME: admin MYSQL_ROOT_PASSWORD: admin PMA_ARBITRARY: 1 

Dockerfile PHPFPM:

  FROM php:fpm RUN docker-php-ext-enable opcache RUN apt-get update \ && apt-get install -y --no-install-recommends libpq-dev \ && docker-php-ext-install mysqli pdo_pgsql pdo_mysql 

GitHuburl: https : //github.com/MolengraafFrank/DockerSymfony

有人能帮我吗? 感谢您的时间。

“[2002]连接被拒绝”意味着您可以访问数据库服务器,但是您无权访问该用户(在您的情况下为pipe理员)。 默认情况下,mariadb拥有root用户,密码为MYSQL_ROOT_PASSWORD,用户可以从任何服务器(%)连接。

如果您想要使用超过login到您的数据库,您必须在数据库服务器中创build它,并从选定的位置授予数据库的权利。

一个过度的问题是,你把你的数据库服务器“mysql”,默认情况下phpmyadmin试图连接到“数据库”。 所以你必须补充

  PMA_HOST: mysql 

给你Phpmyadmin的环境。 我认为MYSQL_USERNAME和PMA_ARBITRARY是无用的,如果你使用默认configuration(连接到你的数据库服务器的根)

你需要将phpfpm容器链接到mysql。

我设法使用mysql命令行工具连接到mysql实例,这是我使用的命令 – mysql -u root -p -h 127.0.0.1 ,并inputpipe理员密码。 这是一个足够的解决scheme吗?