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

Laravel桌面Docker环境MySQL密码查找及Windows Sail部署后容器内MySQL连接故障排查

咱们一步步来解决你遇到的这两个问题,先从查找MySQL密码开始,再搞定应用容器无法连接数据库的核心难题:

1. 查找桌面Docker环境下Laravel项目的MySQL密码

根据你用的是Laravel Sail还是普通Docker部署,有几种快速查找方式:

如果你用的是Laravel Sail

  • 最直接的方法:打开项目根目录的.env文件,找到DB_PASSWORD字段,后面的字符串就是自动生成的MySQL密码——Sail在初始化时会自动把这个值写入.env。
  • 如果.env里的密码丢失或被覆盖:查看MySQL容器的启动日志,执行命令:
    docker logs app-mysql-1
    
    日志里会有一行类似GENERATED ROOT PASSWORD: XXXXXXX的内容,这就是初始密码。

普通Docker部署的Laravel项目(非Sail)

  • 检查项目根目录的docker-compose.yml文件:在MySQL服务的environment配置块里,MYSQL_ROOT_PASSWORD对应的就是密码。
  • 用docker inspect查看容器环境变量:
    docker inspect app-mysql-1 | grep "MYSQL_ROOT_PASSWORD"
    
    输出结果里就能提取到密码值。
2. 解决应用容器无法连接MySQL的问题

你遇到的情况很典型,大概率是网络配置、环境变量或者MySQL权限的问题,咱们逐一排查:

第一步:确认容器状态与网络归属

首先确保应用容器和MySQL容器都在运行,并且处于同一个Docker网络中:

  • 查看所有Sail容器的状态:
    ./vendor/bin/sail ps
    
    确认app-mysql-1和你的Laravel应用容器(通常名称类似app-laravel-1)都是Up状态。
  • 检查容器的网络:Sail默认会创建一个名为sail的自定义网络,执行以下命令验证两个容器是否在同一网络:
    docker inspect app-mysql-1 | grep "Networks"
    docker inspect <你的应用容器名> | grep "Networks"
    
    两者必须都属于sail网络,否则应用容器无法通过容器名访问MySQL。

第二步:修正.env文件的数据库配置

应用容器连接MySQL的核心配置都在.env里,必须确保以下字段完全正确:

DB_CONNECTION=mysql
DB_HOST=mysql  # 这里必须写容器服务名,不是localhost!
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=<你找到/修改后的密码>

⚠️ 重点提醒:DB_HOST一定要设为mysql(Sail默认的MySQL服务名),而不是localhost或者127.0.0.1——在Docker容器内部,localhost指向容器自身,而非宿主机,这是很多人踩坑的关键!

第三步:修复MySQL的远程连接权限

如果MySQL的root用户仅允许从localhost连接,应用容器(作为独立的Docker实例)就无法访问。可以这样修改权限:

  1. 进入MySQL容器:
    ./vendor/bin/sail mysql
    
    如果上面的命令失败,直接用docker命令(输入你的MySQL密码登录):
    docker exec -it app-mysql-1 mysql -u root -p
    
  2. 执行SQL语句,允许root用户从任何IP连接(开发环境适用):
    ALTER USER 'root'@'%' IDENTIFIED BY '<你的密码>';
    FLUSH PRIVILEGES;
    
    生产环境可以把%改成应用容器所在的具体网段,更安全。

第四步:清理缓存并重启服务

Laravel可能会缓存旧的配置,导致新的.env设置不生效,执行以下命令清理缓存:

./vendor/bin/sail artisan config:clear
./vendor/bin/sail artisan cache:clear

然后重启所有Sail服务,确保配置生效:

./vendor/bin/sail down
./vendor/bin/sail up -d

第五步:测试连接与迁移

现在可以在应用容器里测试MySQL连接是否正常:

./vendor/bin/sail artisan db:connect

如果能成功进入MySQL命令行,说明连接没问题,再执行数据库迁移:

./vendor/bin/sail artisan migrate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:49:06