命令行工具
achristmascarl/rainfrog avatar
achristmascarl/rainfrog

rainfrog:终端里的轻量级数据库客户端,用 Rust 写的 vim 风格工具

终端的数据库工具。理论上,mysql驱动程序应该能够对支持mysql协议的数据库做同样的事情。

5,332 个 Star95 个 ForkRustMIT

秒懂

它是什么?
rainfrog 是一个面向终端用户的数据库客户端,主打 vim 键位、快速导航和跨平台支持。它用 Rust 编写,目前处于活跃开发阶段,文档明确不建议在生产库上使用写权限。
适合谁用?
rainfrog 适合那些已经习惯终端工作流、需要快速浏览表结构或执行临时查询的开发者,尤其是 PostgreSQL 用户,因为它处于 tier 1 支持级别。不适合对稳定性要求极高的生产环境操作,文档也明确警告不要用写权限连接生产库。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 22 天前。
用什么语言写的?
主要是 Rust(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题:终端用户缺一个轻量数据库客户端

大多数数据库客户端要么是图形界面,要么是命令行工具。图形界面占用资源,命令行工具如 psql 功能强大但交互性弱。rainfrog 试图填补这个空隙:一个运行在终端里的交互式工具,让你不用离开终端就能浏览表、执行查询、查看元数据。它的目标用户是那些整天泡在终端里的开发者或运维人员,他们不想为了查一条数据就打开一个 GUI 应用。README 里提到的特性包括 vim 风格键位、鼠标支持、查询编辑器带关键字高亮、历史记录和收藏功能。这些听起来像是把 IDE 的一部分体验搬到了终端里。但要注意,它不是一个完整的数据库管理工具,更像是一个快速的浏览和查询界面。

实际工作机制:基于 Rust 和 Ratatui,驱动分层支持

rainfrog 是用 Rust 写的,UI 部分基于 Ratatui 库,这是一个用于构建终端界面的框架。从 README 的依赖部分可以看到,它支持多种数据库,但支持程度分成了四个层级。PostgreSQL 是 tier 1,意味着最常测试,bug 会尽快修复。MySQL 和 SQLite 是 tier 2,Redshift 也是 tier 2,但它是通过 PostgreSQL 的 wire protocol 连接的。DuckDB 是 tier 3,Oracle 是 tier 4。这种分层设计很实际,因为维护多个数据库驱动的工作量很大,明确标注支持级别可以让用户知道风险。关于连接方式,它支持连接选项、连接 URL 和环境变量三种方式,这给了用户灵活性。但注意,README 提到 PostgreSQL 驱动理论上可以连接其他支持 Postgres wire protocol 的数据库,比如 Redshift,但功能没有充分测试。MySQL 驱动也有类似的说法,但只是理论上的。这意味着你如果要用一个冷门数据库,需要自己验证兼容性。

安装方式很多,但平台差异要注意

安装途径相当丰富:cargo install rainfrog --locked 是最直接的方式,但需要先装 Rust。Homebrew、Arch Linux 的 pacman、Nix、conda、pixi 都有对应的包。Termux 用户需要特殊处理,要用 --no-default-features 禁用默认特性。还有一个安装脚本,但依赖 jq 和 fzf,而且需要手动选择二进制。这些选项覆盖了主流平台,但每个平台都有坑。比如,DuckDB 的预编译二进制和 musl 版本不包含驱动,这意味着如果你用 musl 的静态链接版本,DuckDB 可能用不了。Oracle 驱动需要额外的 Oracle Client 库,安装后还得手动复制文件到指定位置。这些细节在 README 里都写明了,但用户很容易忽略。如果你是 macOS 用户,README 里有一个专门的 N.B. 部分,说明某些键位可能需要额外设置。

使用场景:连接、查询、导出,但别在生产库上写数据

使用方式有三种:连接选项、连接 URL、环境变量。README 给出了 docker run 的例子,说明可以通过容器运行。日常操作包括浏览 schema 和表列表、在查询编辑器里写 SQL、查看历史记录、收藏常用查询。导出功能也有,但具体格式没有在截取的部分详细说明。关键限制是文档明确警告:不推荐用写权限连接生产数据库。这是一个非常诚实的声明,说明项目还没有达到生产级稳定性。对于只读查询和开发环境,它应该够用。但如果你需要执行 DDL 或修改数据,风险自负。另外,表过滤和快速复制数据的功能听起来很方便,但具体实现细节没有在 README 中展开,需要实际使用才能知道体验如何。

已知局限:活跃开发,破坏性变更随时可能

README 的 disclaimer 部分说得很直接:项目处于活跃开发阶段,预期会有破坏性变更,使用风险自负。版本号还在 0.4.x,这本身就说明 API 和功能都可能变化。另一个局限是驱动支持的不均衡。PostgreSQL 是亲儿子,但 MySQL 和 SQLite 只是 tier 2,这意味着 bug 修复可能不会那么及时。Redshift 通过 Postgres 协议连接,但兼容性未充分测试。DuckDB 的驱动在预编译包里缺失,Oracle 需要额外依赖。这些限制意味着,如果你用的数据库不在 tier 1,你可能需要自己编译或者忍受一些未解决的问题。还有,图标需要 Nerd Font,如果你没有安装,界面会显示乱码或空白,这不算 bug,但会影响体验。

对比替代方案:psql 和 GUI 工具,差异在于交互模式

最常见的替代方案是数据库自带的命令行客户端,比如 psql。psql 功能强大,但它是逐行交互,没有表格浏览界面,也没有查询历史记录的可视化。rainfrog 提供了类似 TUI 的界面,你可以用方向键或 vim 键位在表之间跳转,这在 psql 里做不到。另一个替代方案是 GUI 工具如 DBeaver 或 TablePlus,它们提供完整的图形界面,但需要图形环境,而且启动慢。rainfrog 的优势是轻量,启动快,适合在 SSH 会话中使用。但 GUI 工具通常有更完善的查询编辑器和结果集操作,比如排序、筛选、导出 CSV。rainfrog 的 README 提到了导出功能,但没有详细说明,所以功能深度可能不如 GUI。如果你只想要一个快速查看表结构的工具,rainfrog 比 psql 更直观,比 GUI 更轻便。

维护成本与许可证:MIT 许可,但依赖需要留意

项目使用 MIT 许可证,这对商业使用很友好。但维护成本体现在几个方面。首先,由于是 Rust 项目,编译需要 Rust 工具链,如果你用 cargo install,编译时间可能不短。其次,某些驱动需要外部库,比如 Oracle 的 ODPI-C,这增加了部署复杂度。升级成本也不可忽视,因为项目还在 0.4.x,API 可能变化,你需要关注每次 release 的变更日志。另外,README 提到安装脚本需要 jq 和 fzf,这意味着如果你用脚本安装,还得额外装这两个工具。总体来说,对于个人开发者,维护成本可控;对于团队部署,需要标准化安装流程。

编辑结论

rainfrog 适合那些已经习惯终端工作流、需要快速浏览表结构或执行临时查询的开发者,尤其是 PostgreSQL 用户,因为它处于 tier 1 支持级别。不适合对稳定性要求极高的生产环境操作,文档也明确警告不要用写权限连接生产库。在采用前,先确认你的数据库驱动是否在支持列表中,比如 DuckDB 的预编译二进制不包含驱动,Oracle 需要额外安装客户端库。其次,检查你的终端是否支持 Nerd Font,否则图标无法显示。最后,由于项目处于活跃开发阶段,且版本号仍为 0.4.x,建议先阅读 CHANGELOG 或 release notes 确认最新版本是否有破坏性变更。如果你只需要一个只读的查询工具,rainfrog 值得一试;如果需要完整的事务管理和图形界面,它可能不是合适的选择。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记