最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
phpMyAdmin如何通过SSH隧道安全连接
时间:2026-08-07 11:22:55 编辑:袖梨 来源:一聚教程网
phpMyAdmin本身不支持SSH隧道,需在Web服务器上手动建立本地端口转发并配置host为'127.0.0.1'、port匹配隧道端口,同时确保数据库用户授权包含堡垒机内网IP,否则即使隧道正常也会因认证失败报#2002错误。
phpMyAdmin 本身不支持 SSH 隧道,所谓“通过 SSH 隧道连接”,实际是靠你在运行 phpMyAdmin 的服务器上手动建立本地端口转发,再让 phpMyAdmin 去连 127.0.0.1 上的某个本地端口——它完全感知不到背后有跳板机。
为什么 phpMyAdmin 连不上 SSH 隧道?常见报错 #2002
这个错误几乎总是因为连接参数和隧道状态不匹配,不是 phpMyAdmin 坏了,而是没对上。典型表现是页面提示 Cannot log in to the MySQL server,但你确认密码没错、MySQL 服务也正常。
-
host写成了'localhost':PHP 会尝试走 Unix socket,直接绕过你的 SSH 隧道;必须改成'127.0.0.1' - 隧道进程已退出:执行
ps aux | grep ssh,看不到那条-L 33061:10.0.1.10:3306命令,说明隧道断了 - phpMyAdmin 配置没生效:改的是错的
config.inc.php文件(比如改了模板文件却没覆盖实际加载的那个) - 浏览器 Network 标签里看到请求发到了
:3306而不是你配的:33061,说明配置根本没加载
如何在 Web 服务器上建立并守护 SSH 隧道
隧道必须建在运行 phpMyAdmin 的机器上(比如 web01),不能建在你本地电脑。否则 phpMyAdmin 根本访问不到那个端口。
- 基础命令:
ssh -fN -L 33061:10.0.1.10:3306 [email protected],其中33061是本地空闲端口,10.0.1.10:3306是内网数据库地址 - 必须加
-fN:后台运行且不执行远程命令,只做端口转发 - 必须提前配好免密登录:在
web01上跑ssh-copy-id [email protected],否则隧道启动就卡住 - 重启后自动恢复:用
autossh或 systemd --user service,例如autossh -M 0 -fN -L 33061:10.0.1.10:3306 [email protected]
phpMyAdmin 配置要点:host、port、授权三者必须一致
改 config.inc.php 时,只动这三项,其他保持默认即可:
-
$cfg['Servers'][$i]['host'] = '127.0.0.1';(严禁用localhost) -
$cfg['Servers'][$i]['port'] = '33061';(必须和ssh -L后面的本地端口完全一致) - 数据库用户授权必须包含堡垒机的内网 IP,比如
GRANT ALL ON *.* TO 'dbuser'@'10.0.0.5';,而不是'dbuser'@'%'或'dbuser'@'localhost'
最容易被忽略的是数据库授权范围——隧道连得通,但认证失败,90% 是因为 MySQL 用户只允许从 localhost 或某个公网 IP 登录,而实际连接来源是堡垒机的内网出口 IP。这个细节不检查,其他全对也白搭。