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

Laravel Sail(MacOS):无法通过本地数据库工具查看Docker数据库

问题分析与解决步骤

首先纠正一个误解:Docker卷的作用是持久化容器内的MySQL数据,防止容器销毁后数据丢失,它并不会实现容器数据库和本地数据库的双向同步——你没法直接通过本地文件系统访问容器里的数据库文件,必须通过网络连接来访问。

针对你无法用TablePlus连接Docker内MySQL的问题,按以下步骤排查:

1. 确认端口映射是否正常

  • 检查项目根目录的.env文件,确认FORWARD_DB_PORT的值是3306(或者你自定义的端口,只要本地没被占用)
  • 执行sail ps查看mysql容器的端口状态,确认0.0.0.0:3306->3306/tcp这类映射存在
  • 如果本地装了原生MySQL,会占用3306端口,此时需要修改.env里的FORWARD_DB_PORT为其他值(比如3307),然后重启容器:sail down && sail up -d

2. 检查TablePlus的连接参数

连接时必须用以下参数:

  • 主机:127.0.0.1(不要用localhost,MacOS下localhost默认走Unix Socket,而Docker映射的是TCP端口,会导致连接失败)
  • 端口:和.env里FORWARD_DB_PORT一致,默认3306
  • 用户名:.env里的DB_USERNAME(或者用root用户)
  • 密码:.env里的DB_PASSWORD
  • 数据库名:.env里的DB_DATABASE

3. 验证MySQL用户的远程访问权限

  • 进入MySQL容器:sail exec mysql bash
  • 登录MySQL:mysql -uroot -p,输入.env里的DB_PASSWORD
  • 执行以下命令查看用户权限:
    SELECT user, host FROM mysql.user;
    
  • 确保你用来连接的用户(比如DB_USERNAME对应的用户)的host字段是%(允许从任意IP连接),如果不是,执行:
    ALTER USER '你的用户名'@'%' IDENTIFIED BY '你的密码';
    FLUSH PRIVILEGES;
    
    替换成你.env里的DB_USERNAME和DB_PASSWORD

4. 排查MacOS防火墙

打开「系统设置」-「网络」-「防火墙」,确认没有阻止对应端口的入站连接,或者临时关闭防火墙测试连接是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:31:00