phpMyAdmin 在 Laravel Forge 上需手动部署为独立站点,不可与 Laravel 项目混放;须禁用 /config 访问、最小化 config.inc.php 权限(600)、确保 MySQL 允许 127.0.0.1 连接且密码正确转义。

Forge 服务器上 phpMyAdmin 不是“一键安装”的组件
Laravel Forge 默认不提供 phpMyAdmin 安装选项,也不推荐通过 Web 面板直接添加——它被刻意排除在自动化部署流程之外,核心原因是安全策略:暴露数据库管理界面会显著扩大攻击面。你看到的“Forge + phpMyAdmin”组合,实际是手动部署的 PHP 应用,不是 Forge 管理的服务。
必须手动部署,且路径不能放在 Laravel 项目目录下
phpMyAdmin 必须作为独立网站存在,与你的 Laravel 应用隔离。常见错误是把它解压进 ~/sites/your-app.com/public/pma,这会导致:URL 暴露路径、Nginx 配置继承主站规则(可能泄露 config 文件)、权限混乱(web 用户可写 config.inc.php)。正确做法是:
- 新建独立站点目录:
/var/www/phpmyadmin.yourdomain.com - 用非 web 用户(如
forge)解压源码,再用chown -R forge:www-data设定属主 - 在 Forge 后台手动添加该域名,并指向此路径(不要勾选“SSL redirect”除非你确认已配好证书)
- 确保 Nginx 配置中禁用对
/config目录的访问:location /config { deny all; }
配置文件 config.inc.php 必须手动创建且最小化权限
Forge 服务器没有图形界面,不能用 /setup 页面生成配置。你必须从 config.sample.inc.php 复制并编辑,关键点只有三个:
-
$cfg['Servers'][$i]['host'] = '127.0.0.1';(别用localhost,避免 socket 连接失败) -
$cfg['Servers'][$i]['auth_type'] = 'cookie';(禁止config认证方式) -
$cfg['blowfish_secret'] = '随机32位字符串';(用openssl rand -base64 32生成)
完成后立即执行:chmod 600 config.inc.php。任何高于 600 的权限(比如 644)都会让 Forge 的安全扫描告警,且可能被 Nginx 错误地当作静态文件返回。
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
访问前必须关闭 MySQL 的 skip-networking 并验证用户权限
Forge 创建的 MySQL 用户默认只允许 localhost 连接,但 phpMyAdmin 是通过 PHP-FPM 进程连接,走的是 TCP 而非 socket,所以需确认:
- MySQL 配置中
skip-networking是注释掉的(sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf) - 运行
mysql -u root -e "SELECT host FROM mysql.user WHERE User='forge';",结果里必须含127.0.0.1或%;若只有localhost,需执行:CREATE USER 'forge'@'127.0.0.1' IDENTIFIED BY 'xxx'; GRANT ALL ON *.* TO 'forge'@'127.0.0.1'; FLUSH PRIVILEGES; -
DB_HOST=127.0.0.1在 Laravel 的.env和 phpMyAdmin 的config.inc.php中必须一致
最容易忽略的是:Forge 新建的 MySQL 用户密码可能含特殊字符(如 @、$),复制到 config.inc.php 时未加引号或转义,导致 PHP 解析失败报 Parse error。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










