英文原文 #
Sql Console:專為跳板機(Bastion Host)打造的輕量、極速雙引擎 SQL 終端工具 #
在現代雲端架構與嚴格的資安資產保護下,生產環境的資料庫通常會被妥善保護在私有子網路(Private Subnet)中。身為 DBA 或維運工程師,我們唯一的存取途徑往往是透過跳板機(Jump Host / Bastion Host)。
然而,在跳板機上管理資料庫時,你是否也常遇到以下痛點?
- 傳統 CLI 操作不便:原生的
psql或mysql終端介面較為陽春,當執行SELECT *跑出上萬條數據時,畫面瞬間被雜亂的文字吞沒,極難閱讀。 - 缺乏圖形化 GUI 的彈性:跳板機環境通常受到嚴格限制,無法開啟圖形介面(GUI)工具(如 DBeaver、DataGrip),且基於安全考量,也不可能直接將資料庫埠口(Ports)暴露給外部網路。
- 資料匯出繁瑣:想將線上環境的特定資料匯出成 Excel 或 CSV 供業務團隊分析,往往需要撰寫複雜的腳本,效率低落。
為了解決這些長年困擾維運團隊的痛點,我正式推出了這款專為現代基礎設施設計的輕量級、多功能 SQL 終端工具 —— Sql Console!
什麼是 Sql Console? #
Sql Console 是一個具備高效能、高擴充性的命令列工具,旨在完美橋接維運人員的本地端環境與遠端隔離的資料庫。它不僅內建 Bastion Host Ready 特性,能完美適應受限的跳板機環境,更在終端帶來了媲美 GUI 工具的豐富視覺操作與數據導出能力。
核心設計:Go + Java 雙引擎架構(Client-Daemon Split) #
Sql Console 最具特色的地方在於其採用的用戶端與核心服務分離(Client-Daemon Split)架構:

- Go Client(基於 Go 1.20+ 實作):負責處理極速的 CLI 參數解析、動態 TUI 表格渲染與終端互動,確保操作流暢、輕量不佔資源。
- Java Daemon(基於 Java 21 + Gradle 實作):充分利用 Java 21 先進的語法特性(如 Records、Sealed Classes),專職負責底層穩健的 JDBC 連線池管理、複雜 SQL 執行以及高效能的結果集序列化。
- 高效本地通訊 (IPC):兩者在跳板機本地透過 Unix Domain Socket (UDS) 與 NDJSON (Newline Delimited JSON) 協定進行超低延遲的通訊,兼顧了安全性與極致效能。
五大核心優勢 #
1. 專為跳板機優化(Bastion Ready) #
安裝極其輕量,完全符合企業內部跳板機嚴格的安全防禦與資源限制要求。透過集中式的 Profile 機制,還能為整個 DBA 團隊統一配置系統級的資料庫連線設定。
2. 精美的 TUI 互動與強大的分頁機制(\p) #
在互動式 REPL 模式中,Sql Console 提供了美觀的表格渲染與 Schema 瀏覽功能(如透過 \dt 快速查看資料表結構)。更棒的是,它內建了結果集分頁機制(預設每頁 Fetch 20 筆),只要輸入快捷指令 \p <頁碼>(例如 \p 2),就能在命令列中優雅地上下翻頁,再也不怕終端被大量數據洗版!
3. 一鍵高速導出大數據集(Excel / CSV) #
再也不需要透過複雜的 SQL 指令或拼湊 shell 腳本來轉存資料。Sql Console 用戶端支援命令列一鍵導出,只需加上 -o 參數與檔案名稱,Go Client 就會直接將遠端資料庫的大量數據流式寫入 CSV 或 Excel 檔案,速度飛快。
4. 企業級安全稽核日誌(Audit Log) #
在生產環境中,安全至上。Sql Console 內建嚴格的稽核機制,所有透過本地端執行的資料庫操作、連線嘗試及查詢動作,都會被完整記錄至系統的 audit.log 中。更重要的是,核心引擎對敏感資訊(例如 PASSWORD 或 IDENTIFIED BY 等關鍵字)具有自動過濾與遮罩處理(Masking)機制,防止任何機密外洩。
5. 靈活的設定檔持久化 #
支援系統級(/etc/sql-console/profiles)與個人用戶級(~/.sql-console/profiles)的資料庫連線設定(Profiles),方便團隊協作,也確保了權限管理的靈活性。
快速上手指南 #
Sql Console 目前已針對 Linux(尤其是 Debian/Ubuntu 生態系)進行極致優化。
1. 安裝 #
僅需確保跳板機上裝有 Java 21+ 環境,即可直接透過 deb 包一鍵部署用戶端與 Daemon 服務:
|
|
2. 管理連線設定(Profile) #
您可以安全地將常用的資料庫連線字串儲存起來:
|
|
3. 進入 REPL 互動模式 #
使用 -p 參數指定連線,即可開啟高互動性的 SQL 命令列體驗:
|
|
4. 大數據快速匯出範例 #
如果您想在單次命令中直接把查詢結果匯出為本地檔案,只需執行:
|
|
開源與展望 #
Sql Console 的誕生源自於實際維運現場的深刻痛點。我們希望透過 Go 的輕快與 Java 豐富的 JDBC 生態系,為所有身處第一線的 DBA、DevOps 與維運工程師提供一個更現代、更安全、更優雅的維運利器。
本專案的核心套件結構定義在 work.pollochang.app.sqlconsole 下,目前正持續優化各類資料庫的相容性與進階 TUI 特性。如果您對這個專案感興趣,歡迎到我的 GitHub 點個 Star、回報 Issue,或是直接提交 Pull Request!讓我們一起打造最棒的跳板機維運神器!
- 專案 GitHub 傳送門:sql-console
- 技術開發規範詳見:
DEVELOP.md