You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Laravel Sail数据库配置失败:端口已被占用如何解决

报错原因

Laravel Sail默认会将容器内MySQL的3306端口直接映射到宿主机的3306端口,当宿主机3306端口已经被其他数据库服务或容器占用时,就会触发端口分配失败的报错。

解决方法

优先使用环境变量配置的方式修改,无需改动Docker核心配置:

  • 打开项目根目录的.env配置文件,新增或修改FORWARD_DB_PORT参数,指定一个未被占用的本地端口,比如常用的3307:
FORWARD_DB_PORT=3307

注意:不要修改同文件内的DB_PORT参数,该参数是Laravel容器内部连接MySQL使用的端口,容器内MySQL始终监听3306,保持默认值3306即可,修改后会导致容器内服务连接数据库失败。

  • 终止之前启动异常的Sail进程,重新加载配置启动容器:
./vendor/bin/sail down
./vendor/bin/sail up -d

如果你之前已经执行过./vendor/bin/sail artisan sail:publish发布过Sail的Docker配置文件,也可以直接修改项目根目录下的docker-compose.yml文件:

  • 找到mysql服务节点下的ports配置段,将端口映射的宿主机部分修改为自定义可用端口:
mysql:
  image: 'mysql/mysql-server:8.0'
  ports:
    - '${FORWARD_DB_PORT:-3307}:3306'
  • 修改完成后同样执行sail down和sail up命令重启容器即可生效。
验证

启动完成后,本地宿主机上的数据库客户端连接Sail内置MySQL时,使用你配置的自定义端口(比如3307)即可正常连接,不会再触发端口占用报错。

内容的提问来源于stack exchange,提问作者Nelb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:02:01