Laravel Docker部署执行migrate报SQLSTATE[HY000] [2002]连接被拒绝
问题根因
你的错误来源于Docker容器内部网络端口的误用:
- Docker Compose启动的多个容器默认走内部网桥网络互通,访问
db服务时,直接使用db容器本身暴露的端口3306即可 - 你配置的
33069是端口映射后宿主机的访问端口,只有运行在宿主机上的工具(比如你用的PhpStorm)才能通过这个端口访问数据库,容器内部访问33069端口不存在,所以会报连接拒绝
解决步骤
- 修改项目根目录下的
.env配置,将DB_PORT参数从33069改为3306:
DB_PORT=3306
- 进入
users容器重新清除配置缓存:php artisan config:clear - 重新执行迁移命令即可正常运行:
php artisan migrate
补充说明
你docker-compose.yml中mysql服务的MYSQL_USER配置存在冗余:mysql镜像默认会创建root用户,额外设置MYSQL_USER: root会新建一个同名普通用户,容易和默认root用户的权限混淆,建议删除该环境变量配置即可。
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

