我在使用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
答案 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是否正在运行。