Docker中MySQL无法启动:Unix套接文件被占用问题求助
解决Laravel Sail在macOS上MySQL启动失败及连接DNS解析错误问题
一、解决MySQL容器启动失败(套接字被占用)
1. 终止本地占用套接文件的MySQL进程
macOS可能通过Homebrew、官方安装包等方式运行了本地MySQL,占用了Unix套接文件,执行以下操作排查并终止:
- 查看所有MySQL相关进程:
ps aux | grep mysqld - 找到PID为62的进程,强制终止:
sudo kill -9 62 - 若为Homebrew安装的MySQL,直接停止服务:
brew services stop mysql - 若为官方DMG安装的MySQL,卸载启动项:
sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
2. 清理Docker残留资源
- 彻底停止并移除Sail容器及关联卷(避免残留缓存或无效套接文件):
./vendor/bin/sail down -v - 重启Docker Desktop(点击顶部状态栏Docker图标,选择
Restart)
3. 重新启动Sail服务
./vendor/bin/sail up -d
二、解释"getaddrinfo for mysql failed"错误
这个错误不是连接拒绝,而是DNS解析失败:当MySQL容器未正常启动时,Laravel应用所在的Docker容器无法在内部网络中找到名为mysql的服务,导致DNS解析失败。只要MySQL容器启动成功,该错误会自动消失,无需修改.env中的DB_HOST配置(默认值mysql是正确的)。
验证
启动服务后,执行以下命令确认MySQL容器状态:
./vendor/bin/sail ps
当mysql容器状态显示为Up时,访问localhost即可正常连接数据库。
内容的提问来源于stack exchange,提问作者Polecalex
相关产品推荐
相关产品推荐

