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

Laravel通过ddev(Docker)部署时MySQL数据库连接与管理方法

Ddev部署的Laravel项目数据库配置相关解答

配置生效逻辑说明

你当前.env中配置的DB_HOST=db是ddev默认创建的MySQL数据库容器的服务名,Docker会在项目专属的内部网络中通过内置DNS将这个服务名解析到数据库容器的内部IP,因此Laravel容器发出的3306端口数据库请求会直接走Docker内部网络打到自带的数据库容器上,这也是你数据库迁移能正常运行的核心原因——容器环境默认和宿主机的服务、端口是隔离的。

查看当前配置对应数据库内容的方法

不需要修改现有配置,任选以下一种方式即可:

  • 命令行交互查询:在项目根目录执行ddev mysql命令,会直接进入数据库容器的MySQL命令行终端,可直接执行SQL语句查询、修改数据
  • 第三方数据库客户端连接:在项目根目录执行ddev describe,输出结果中会列出MySQL服务映射到宿主机的端口(一般为随机高位端口,不是默认3306),打开Navicat、DBeaver等客户端,连接信息填写:
    • 主机:127.0.0.1
    • 端口:上一步查到的宿主机映射端口
    • 用户名、密码、数据库名:和.env中配置的db、db、db一致即可
  • 网页端管理工具:在项目根目录执行ddev phpmyadmin,ddev会自动启动phpMyAdmin服务并打开对应浏览器页面,可直接在可视化界面浏览库表、操作数据。

连接宿主机本地MySQL服务的方法

可以连接,但不能直接将DB_HOST改为localhost:Laravel运行在Docker容器内部,容器内的localhost指向的是Laravel容器自身,而非你的宿主机,修改后会直接报连接拒绝错误。
正确操作步骤如下:

  1. 修改宿主机本地MySQL的配置文件,将绑定地址从默认的127.0.0.1调整为0.0.0.0,允许来自非本机IP的连接,同时给目标数据库配置允许远程访问的账号权限
  2. 将项目.env中的DB_HOST修改为host.docker.internal,这是Docker提供的固定域名,会自动解析到宿主机在Docker内部网络中的IP
  3. 将DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD全部修改为你本地MySQL服务对应的实际参数
  4. 项目根目录执行ddev restart重启容器加载网络配置,之后执行数据库迁移测试连通性即可。

注意:切换到宿主机数据库后,ddev自带的数据库容器仍会默认运行,只是项目不会再向其中写入数据,如果不需要该服务可以修改ddev配置文件关闭自带数据库服务,节省系统资源。


内容的提问来源于stack exchange,提问作者Gaspar Giménez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:36:19