Ubuntu环境下Laravel Sail启动报错:3306端口被占用求助
解决Laravel Sail启动时3306端口被占用的问题
方法一:定位并停止占用3306端口的进程
- 先查询哪个进程占用了3306端口:
输出结果里会显示进程ID(PID)和进程名称,比如常见的本地安装的sudo lsof -i :3306 # 或者用另一种命令 sudo netstat -tulpn | grep 3306mysql服务。 - 停止该进程/服务:
sudo systemctl stop mysql - 若不想下次开机时该服务再次占用端口,可禁用其开机自启:
完成后重新执行sudo systemctl disable mysqlsudo ./vendor/bin/sail up即可。
方法二:修改Laravel Sail的MySQL端口映射
如果需要保留本地MySQL服务,直接修改Sail的端口配置:
- 打开项目根目录下的
.env文件,找到DB_PORT=3306,将其改为未被占用的端口(比如3307):DB_PORT=3307 - 保存文件后,重新启动Sail:
后续本地连接数据库时使用3307端口即可,Laravel应用会自动读取sudo ./vendor/bin/sail up -d.env中的配置,无需修改业务代码。
额外排查步骤
- 检查是否有残留的Docker容器:
找到与mysql相关的容器,执行docker ps -adocker rm <容器ID>删除后,再重新启动Sail。 - 清理Docker无用网络:
确认清理后再次尝试启动Sail。docker network prune
内容的提问来源于stack exchange,提问作者Süheyla Ceren Mescioğlu
相关产品推荐
相关产品推荐

