phpMyAdmin 不支持自动发现 MySQL 实例,必须在 config.inc.php 中为每台实例(含内网穿透)手动配置 $cfg['Servers'][$i],Nginx 仅反向代理 PHP 执行环境,不参与数据库连接逻辑。
直接说结论:phpmyadmin 本身不支持自动发现或动态加载 mysql 实例,config.inc.php 必须手动为每台 mysql(含内网穿透后的)逐条配置 $cfg['servers'][$i],nginx 只是反向代理 php 执行环境,它不参与数据库连接逻辑。
config.inc.php 中必须显式配置每个 MySQL 实例
phpMyAdmin 启动时只读取 config.inc.php 里已定义的 $cfg['Servers'] 条目,Nginx 代理与否完全不影响这一行为。你看到的“下拉列表里没出现新服务器”,99% 是因为没在配置里加对应条目。
-
$i++必须放在每个新服务器块之前,且索引从 1 开始连续递增;跳号(如写成$i = 2)、重复索引、或漏掉$i++都会导致后续配置被忽略 - 每台 MySQL 实例需独立一套
host、port、auth_type、user、password(或留空由登录页输入) - 若某实例走内网穿透(如
db-test.cpolar.io:12345),host填域名,port填穿透端口——别填localhost或127.0.0.1,那只会连本地 MySQL - 删掉或注释掉残留的
$cfg['Servers'][$i]['socket'],否则 phpMyAdmin 会优先走 socket 连接,无视host+port
auth_type 必须设为 'cookie',别碰 'http'
Nginx 代理场景下 auth_type = 'http' 几乎必然失败,不是配置错,是架构不兼容。
-
auth_type = 'http'依赖 Web 服务器(如 Nginx)做 HTTP Basic Auth,但 phpMyAdmin 拿不到你输的用户名密码去匹配不同 MySQL 实例——所有实例共用同一套凭据,根本没法区分“连的是测试库还是生产库” - 穿透服务(如 frp/ngrok/cpolar)通常不透传或会剥离
Authorization请求头,导致认证直接被拒 -
auth_type = 'cookie'才是唯一可靠选择:登录页下拉选服务器 → 输入对应账号密码 → 凭据存 session → 安全且可区分实例
Nginx 配置只需确保 PHP 正常执行,不参与数据库路由
Nginx 在这里只干一件事:把 /phpmyadmin/ 路径下的请求转发给 PHP-FPM。它不解析、不改写、不代理到 MySQL,数据库连接完全由 PHP 进程发起。
- 确认 Nginx 的
location ~ \.php$块中fastcgi_pass指向正确的 PHP-FPM 地址(如127.0.0.1:9000或unix:/var/run/php/php8.1-fpm.sock) - 不要在 Nginx 层尝试用
upstream做 MySQL 负载均衡——那是无效的,MySQL 协议不是 HTTP,Nginx 默认不支持 MySQL 代理 - 若 phpMyAdmin 页面报 502 或空白,先检查 PHP-FPM 是否运行、
fastcgi_param SCRIPT_FILENAME路径是否正确、PHP 扩展(mysqli、mbstring)是否启用
穿透后连接超时或 #2002 错误的典型原因
内网穿透引入网络链路不确定性,#2002 Cannot log in to the MySQL server 错误表面是连不上,根源往往在配置或网络层。
立即学习“PHP免费学习笔记(深入)”;
-
host写成'localhost'或'127.0.0.1':这是 phpMyAdmin 所在机器的回环地址,不是穿透目标;必须填穿透服务分配的公网地址(如'my-prod-db.cpolar.io') -
port写成'3307/tcp'或带空格:PHP 解析失败后静默转为0,最终连到默认 3306 端口——看似连上,实则连错库 - DNS 解析慢或失败:穿透域名可能解析延迟高,在配置中加
$cfg['Servers'][$i]['connect_timeout'] = 30;避免卡住 - MySQL 侧未授权穿透 IP:确认目标 MySQL 的
bind-address允许远程连接,并执行GRANT时用了穿透出口 IP(不是内网 IP)
真正麻烦的不是配多少台,而是每台都要对齐 host/port/auth_type/socket 四要素,且不能有残留干扰项。一旦某台连不上,优先查这四点,比调 Nginx 日志快得多。



















