Docker部署Laravel遇SQLSTATE[HY000][1045]数据库访问拒绝问题求助
解决Laravel Docker部署中MySQL访问拒绝错误
1. 修正密码不匹配问题
你的docker-compose.yml中MySQL的MYSQL_ROOT_PASSWORD配置为F450pH3Af*v9kGfLzfYxgSAlH1V@PnZ*pC4,但Laravel .env文件里的DB_PASSWORD是secret,两者不一致是导致错误的直接原因。
修改.env文件的密码配置:
DB_PASSWORD=F450pH3Af*v9kGfLzfYxgSAlH1V@PnZ*pC4
2. 清理旧数据卷(密码修正后仍无效时)
由于使用了db-data持久化数据卷,旧的数据库用户配置可能被缓存,需要彻底重置:
- 停止并删除容器及数据卷:
docker-compose down -v
- 重新启动服务:
docker-compose up -d
3. 验证并修复用户权限
如果上述步骤无效,进入MySQL容器检查root用户权限:
- 进入容器:
docker-compose exec database mysql -uroot -pF450pH3Af*v9kGfLzfYxgSAlH1V@PnZ*pC4
- 执行授权命令,允许root从任意主机访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'F450pH3Af*v9kGfLzfYxgSAlH1V@PnZ*pC4' WITH GRANT OPTION; FLUSH PRIVILEGES;
4. 测试容器网络连通性
确认Laravel容器能正常访问database服务:
- 进入Laravel容器(替换为你的容器名称):
docker-compose exec laravel-app bash
- 测试MySQL连接:
mysql -h database -uroot -pF450pH3Af*v9kGfLzfYxgSAlH1V@PnZ*pC4
内容的提问来源于stack exchange,提问作者AramDonyaee
相关产品推荐
相关产品推荐

