☰
不装客户端也能查库:Databasement内置Adminer数据浏览器实战
2026/10/4 2:30:37 网站建设 项目流程

不装客户端也能查库:Databasement内置Adminer数据浏览器实战

【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite & Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasement

Databasement 是一款自托管数据库备份管理工具,除了定时备份与恢复 MySQL、PostgreSQL、SQLite 等数据库外,还内置了 Adminer 数据浏览器。只需在网页上点一下「Browse」,就能用浏览器直接查库、看表结构、跑 SQL 语句,完全不用安装任何桌面客户端。这篇文章带你实战 Databasement 内置 Adminer 的使用方法、权限配置和适用边界。

为什么需要"免客户端"的数据库浏览器

平时查库、改数据,大多数人依赖 Navicat、DBeaver、DataGrip 这类桌面客户端。它们功能强大,但存在两个痛点:

  • 🖥️环境依赖:需要下载安装,公司内网机器装软件还要走审批流程;
  • 🔐凭据分散:账号密码散落在每个客户端的配置里,不好统一管理。

而 Databasement 本身就要保存数据库的连接信息用于备份,把这些凭据"物尽其用"是顺理成章的事——内置的 Adminer 浏览器可以直接复用已注册的数据库服务器凭据,免密一键登录。

Databasement 的仪表盘界面,左侧导航中可以看到 Database Servers 管理入口:

内置 Adminer 支持哪些数据库

Databasement 内置的 Adminer 浏览器并非对所有服务器都可用,判断逻辑在 app/Models/DatabaseServer.php#L173-L178 的supportsAdminer()方法中,需要同时满足三个条件:

条件说明
数据库类型仅支持MySQL、PostgreSQL、SQLite
无 SSH 隧道配置了 SSH 隧道的服务器不支持
无 Agent 代理Agent 托管的服务器是"出站连接",Databasement 无法直连

也就是说:如果你的 MySQL / PostgreSQL / SQLite 服务器可以被 Databasement直连,那么它几乎一定可以被 Adminer 浏览。MongoDB、Redis、SQL Server 等类型暂时没有 Browse 入口。

实战:三步打开内置数据库浏览器

第 1 步:确认角色拥有use-adminer权限

Adminer 入口受use-adminer权限点控制,默认只有Admin角色持有。Super Admin 可以在Configuration → Roles页面为任意角色授予或收回该权限。这样你可以做到"普通成员只能看备份、不能查数据"的细粒度管控。

第 2 步:找到 Browse 按钮

权限就绪后,进入Database Servers页面:

  • 在服务器列表页,兼容的服务器会直接显示Browse操作按钮;
  • 进入某台服务器的详情页,同样有Browse按钮(见 resources/views/livewire/database-server/show.blade.php 中的渲染条件:角色有权限且服务器支持)。

第 3 步:一键打开,免密登录 🎉

点击Browse后,页面会弹出一个内嵌窗口加载 Adminer(由 app/Livewire/DatabaseServer/AdminerModal.php 驱动),并且已经自动登录——凭据从你保存的服务器配置中读取,无需再次输入账号密码。如果服务器只配置了一个数据库,还会直接跳到该库,省去手动选择。

底层原理:自动登录是怎么实现的?

对好奇的同学,整个链路非常清晰,源码都很短:

  1. 点击 Browse 时,app/Traits/OpensAdminerForServer.php 先做权限与兼容性校验,然后把目标服务器 ID 暂存到 Session,并派发打开弹窗的事件;
  2. 浏览器请求/adminer路由(定义于 routes/web.php),app/Http/Controllers/Web/AdminerController.php 从 Session 取出服务器 ID,拼装出驱动类型、主机端口、用户名密码等凭据;
  3. app/Services/AdminerService.php 加载vendor/dg/adminer包并注入自定义 CSS,同时用缓存替代文件型 Session Handler,保证多 Pod 部署下 Adminer 的长连接与子资源加载不会互相阻塞。

简单说:凭据只存在于服务端 Session 的一次性传递中,浏览器端不需要、也看不到明文密码的二次交互,安全模型和备份功能共用同一份加密存储,没有新增暴露面。

常见限制与避坑提示

  • ❌SSH 隧道服务器没有 Browse 按钮:Adminer 需要直连数据库,隧道场景请改用备份恢复或 SSH 隧道工具;
  • ❌Agent 托管的服务器不支持:Agent 架构下数据库只对 Agent 可达,Databasement 服务端连不上;
  • ⚠️凭据变更要同步:数据库密码修改后记得更新 Databasement 里的服务器配置,否则 Adminer 会自动登录失败。

项目官方文档中对 Adminer 一节有完整说明,可参见 docs/docs/user-guide/database-servers.md 的 "Browsing Data with Adminer" 章节。

写在最后

Databasement 把"备份"和"查库"整合进同一个 Web 界面,是很务实的设计:备份时保存的连接信息,随手就能变成一台随开的 SQL 工作台。对于运维、DBA 乃至开发同学,免客户端的内置 Adminer 数据浏览器足以覆盖日常的查表、验数、救火式 SQL 场景。

【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite & Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasement

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询