【发布时间】:2020-08-24 19:26:34
【问题描述】:
我在运行 Symfony4 项目时遇到了数据库问题。
docker-compose.yml
db:
environment:
MYSQL_DATABASE: ${DATABASE_NAME}
MYSQL_PASSWORD: ${DATABASE_PASSWORD}
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_USER: ${DATABASE_USERNAME}
image: 'mariadb/server:10.4'
ports:
- '3306:3306'
volumes:
- 'db-data:/var/lib/mysql'
.env
DATABASE_URL=mysql://symfony:symfony@db.localhost/symfony
###< doctrine/doctrine-bundle ###
DB_HOST=db.localhost
DB_NAME=symfony
DB_USERNAME=symfony
DB_PASSWORD=symfony
DATABASE_PORT=3306
DATABASE_HOST=db.localhost
DATABASE_USERNAME=symfony
DATABASE_PASSWORD=symfony
DATABASE_NAME=symfony
DATABASE_PORT=3306
PROJECT_NAME=oversight-api
我收到一个错误Access denied for user symfony@172.18.0.1
我不确定172.18.0.1 是什么。我应该将db.localhost 添加到/etc/hosts 吗?
如何解决这个问题?
【问题讨论】:
-
当您启动 docker 时,它会创建自己的网络,172.18.0.0 是它为 docker 层创建的网络。它允许您在不知道 IP 地址的情况下坐在 docker-container1 上 ping docker-container2。我认为显而易见的问题是,您是否在 MySQL 容器中创建了用户 symfony 并授予它访问数据库的权限?
-
@user1628449 我没有做任何事情,包括添加
symfony用户。我刚刚执行了docker-compose up -d -
@user1628449 这不是真的。容器是通过环境变量配置的。特别是,通过环境变量创建的用户是超级用户。我能够使用给定的确切配置在本地启动容器。
标签: php docker docker-compose mariadb symfony4