模型 / 資料集
OtterMind/Chat2DB avatar
OtterMind/Chat2DB

Chat2DB 社群版:把資料庫客戶端與自帶模型的 AI 助手裝進同一個本機程式

Chat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries. Available on desktop, web, Docker, and CLI, with MCP support.

28,120 個 Star3,033 個 ForkJavaNOASSERTION

秒懂

它是什麼?
Chat2DB 是一個以 Java 撰寫、跨平台的本機資料庫客戶端,支援 40 多種資料庫,並讓你接上自己的模型來產生、解釋與優化 SQL。它的關鍵設計是單機單人、資料不出本機,代價是沒有帳號與權限邊界,加密金鑰一旦遺失,已儲存的密碼與 API key 就再也解不開。
適合誰用?
如果你是一個人管好幾套資料庫、想在同一個視窗裡寫 SQL 又不想把 schema 送到別人的雲端,Chat2DB 社群版的定位正好對上,桌面版裝完就能連線,Docker 版則要先把加密金鑰準備好。反過來說,需要多人共用、要有帳號與權限切分、或要把 Web 介面開給整個團隊的場景,這個版本明確不適合,README 要求把 HTTP 服務綁在 127.0.0.1 或 ::1。
可以商用嗎?
請先確認。這個儲存庫使用的授權不在我們自動分類的範圍內,商用前請閱讀儲存庫中的 LICENSE 檔案。
還在維護嗎?
有在維護。儲存庫在最近一天內有新的提交。
用什麼語言寫的?
主要是 Java(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

誰會需要一個本機優先的資料庫客戶端

這個專案要解的問題很具體:多數資料庫 GUI 在處理 AI 功能時,是把你的 schema 或查詢送到廠商自己的雲端;而多數 AI 查詢工具又只是個網頁,沒有真正的資料表瀏覽、DDL 編輯與資料匯入匯出。Chat2DB 把兩件事放在同一個程式裡,並且把 AI 的部分設計成由你接上自己的模型。README 的定位寫得很直白,它服務的對象是 developers、DBAs、analysts 與 data teams,而且「runs entirely on your machine」。

對獨立開發者或小型團隊來說,這個組合的實際意義是:你可以用自然語言產生 SQL,但推論發生在你指定的模型端點上,而不是 Chat2DB 代管的中介服務。至於 40 多種資料庫的支援清單,README 列出的包括 MySQL、PostgreSQL、Oracle、SQL Server、ClickHouse、MongoDB、Redis、SQLite、MariaDB、TiDB、Hive、DB2、Snowflake、BigQuery、Elasticsearch、Trino、TimescaleDB、Greenplum、YugabyteDB、CrateDB、QuestDB、Apache IoTDB、Firebird、HSQLDB、Apache Derby,其餘透過外掛擴充。

需要先講清楚的是,這個清單裡混了關聯式與非關聯式引擎,但 README 沒有說明 MongoDB 或 Redis 這些非 JDBC 資料庫在 SQL 工作區裡的操作體驗與關聯式資料庫是否一致。如果你主要的工作是文件型資料庫,這一點得自己驗證。

JDBC 外掛架構與「不用改程式碼就能加資料庫」

Chat2DB 以 Java 撰寫,資料庫連線走 JDBC。README 對擴充機制的說法是:新的 JDBC 資料庫「can be added through configuration only, without code changes」。這句話的份量比它看起來重,因為它決定了這個專案的維護成本落在誰身上。

傳統資料庫客戶端要支援一個新引擎,通常得改連線層、改方言(dialect)處理、改中繼資料查詢,然後等下一次發版。Chat2DB 把這條路徑收斂成設定,代表一個團隊若內部有冷門的 JDBC 資料庫,可以自己接上去而不用等上游。反過來說,設定化的代價是抽象層要夠通用,遇到行為差異大的引擎時,能調的參數就決定了體驗的上限。README 沒有給出這個設定檔的欄位與範例,所以實際能做到什麼程度,只能從「新增 JDBC 資料庫無需改碼」這個敘述推斷。

安全性上有一個必須注意的細節。README 的 Security Notes 明講:Custom JDBC drivers are executable Java code,只從你信任的來源安裝。這不是免責聲明式的提醒,而是這個擴充機制的真實攻擊面:你放進去的驅動就是會被執行的程式碼。

執行環境方面,Docker 版本要求 Docker 19.03.0+、Compose 2.0.0+(僅 Compose 版本需要)、2 核以上 CPU、4 GiB 以上記憶體。這是官方給出的最低規格,不是建議規格。

加密金鑰:整個部署流程裡最容易出錯的一步

Chat2DB 用 AES-256-GCM 加密儲存的資料源密碼與 AI 模型 API key,金鑰是 per-installation 的。這件事在桌面版是隱形的,在 Web 或 Docker 部署時卻是前置條件。

從 repository checkout 執行一次初始化腳本,需要 openssl:

./script/security/init-community-encryption-key.sh

金鑰會寫到 ~/.config/chat2db-community/encryption.key。README 用粗體強調要單獨備份這個檔案,並在升級與容器重建之間保留它,因為替換或遺失金鑰會讓先前儲存的資料源密碼與 AI 模型 API key 變成無法解讀。

這裡有個行為差異值得記下來:Web 或 headless 啟動時若沒有提供有效金鑰會直接失敗,只有 Desktop 模式會自動建立缺少的金鑰。也就是說,桌面版使用者不會踩到這個坑,Docker 使用者一定會。

Docker 的啟動指令把金鑰以檔案形式掛進容器,並用環境變數指向它:

docker run --detach \ --name chat2db-community \ --restart unless-stopped \ --publish 127.0.0.1:10825:10825 \ --volume "$HOME/.chat2db-community-docker:/root/.chat2db-community" \ --env CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE=/run/secrets/chat2db-community-encryption.key \ --volume "$HOME/.config/chat2db-community/encryption.key:/run/secrets/chat2db-community-encryption.key:ro" \ chat2db/chat2db:latest

金鑰格式的細節 README 也寫了:必須是合法 Base64 且解碼後剛好 32 bytes,內建初始化腳本產生的是標準填充形式,44 個 Base64 字元並以 = 結尾。資料源密碼與 AI API key 共用同一把金鑰,但使用不同的 authenticated AAD 值,所以其中一種用途的密文不能被當成另一種解開。這是正確的做法,也意味著換金鑰等於兩種資料一起失效。

自訂路徑的寫法是先指定路徑給腳本,再在啟動時用系統屬性指向同一個檔案:

./script/security/init-community-encryption-key.sh /secure/path/chat2db-community.key

java -Dloader.path=chat2db-community-server/chat2db-community-start/target/lib \ -Dchat2db.runtime.mode=community \ -Dchat2db.mode=WEB \ -Dchat2db.gui=false \ -Dchat2db.network.status=OFFLINE \ -Dchat2db.community.encryption-key-file=/secure/path/chat2db-community.key \ -Dserver.address=127.0.0.1

注意 -Dchat2db.community.encryption-key-file 與環境變數 CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE 是兩條不同的設定路徑,前者用於直接跑 Java,後者用於容器。

升級、資料目錄與那些不會自動發生的事

Docker 版本的升級流程 README 寫得簡短:pull 新映像、移除舊容器、再跑一次啟動指令,並在重建之間保留 ~/.config/chat2db-community/encryption.key。金鑰之外的部分,它沒有承諾任何遷移。

有兩個容易混淆的細節。第一,docker run 範例把應用資料放在 $HOME/.chat2db-community-docker,而 Compose 定義用的是名為 chat2db-community-data 的具名 volume,README 明講這兩個位置不共享資料。如果你先用 docker run 試,後來改用 docker compose,資料不會跟著過去。

第二,Chat2DB Community 5.3.0 改用獨立的 /root/.chat2db-community 目錄,而且不會自動從使用 /root/.chat2db 的舊映像遷移資料。這是版本層級的目錄變更,不是設定問題,升級前得自己處理搬遷。

從發佈節奏看維護狀態,最近的版本是 v5.3.5(2026-09-02)、v5.3.4(2026-08-20)、v5.3.3(2026-08-06),大約兩到三週一個版本。這個頻率本身不代表品質,但對照前面提到的目錄變更,它意味著升級是需要讀 release notes 的動作,不是無腦 pull。

授權方面,repository 標示為 NOASSERTION,也就是 GitHub 無法從檔案中識別出標準授權條款。README 沒有說明授權內容,本文也不對法律效果做判斷。若你要把 Chat2DB 放進公司流程或再散布,這是你必須自己向專案確認的第一件事。

單使用者信任邊界:這個版本刻意不做的事

Security Notes 那段話值得逐句讀。Chat2DB Community 是 single-user、local-first 的應用,沒有使用者帳號,也沒有使用者之間的授權邊界。README 的要求是:把 HTTP 服務綁在 127.0.0.1 或 ::1,不要暴露給其他使用者或不受信任的網路。

這不是「還沒做完」的缺口,而是產品分線的結果。社群版把多人協作與權限模型排除在外,換來的是部署單純。但 Docker 與 Web 版本的存在會讓人誤以為它適合當團隊的共用入口,這兩件事是衝突的:一旦你把 10825 埠開到內網,任何能連上的人都等於取得了所有已儲存資料源的存取權,因為沒有第二道身分驗證。

README 另外把幾類輸入歸為 untrusted data:匯入的設定檔、封存檔、SQL 檔、資料庫內容,以及 AI 回應。最後一項特別值得留意,因為它意味著模型產生的 SQL 不應該被當成可信任的指令直接執行,這與任何把 LLM 接進執行路徑的工具都一樣。

至於 AI 助手本身,README 的敘述是「bring your own AI model to generate, explain, and optimize SQL in natural language」。模型端點如何設定、支援哪些供應商、API key 存在哪裡,README 只提到 API key 與資料源密碼共用同一把 AES 金鑰,其餘細節沒有給出,需要看官方文件。

與 DBeaver 的路線差異

同樣是跨平台、支援大量資料庫的 Java 客戶端,DBeaver 是最直接的可比對象。兩者的差別不在支援清單的長度,而在 AI 功能的位置。

DBeaver 的架構以 JDBC 驅動管理為核心,AI 能力是後來加上去的輔助,使用者通常得自行處理模型連線與資料外送的邊界。Chat2DB 反過來,把 AI 助手當成工作區的一等公民,並在 README 的產品敘述裡與 SQL 編輯、中繼資料瀏覽、資料匯入匯出並列。這個順序差異會反映在日常操作上:如果你一天多數時間在寫查詢、偶爾需要 AI 幫忙解釋一段複雜 SQL,兩者差別不大;如果你主要想用自然語言把需求轉成查詢再手動調整,Chat2DB 的介面配置更貼合。

另一個差異是交付形式。Chat2DB 同時提供桌面、Web、Docker 與 CLI,CLI 是獨立 repository(OtterMind/Chat2DB-CLI)並支援 MCP。DBeaver 的社群版以桌面為主。如果你的流程需要把資料庫操作接進 agent 或自動化腳本,MCP 這條路是 Chat2DB 目前特有的切入點,但 README 只給了連結,沒有描述 CLI 的實際指令與能力範圍。

反過來說,DBeaver 在長期累積的外掛生態與非關聯式引擎的成熟度上,是 Chat2DB 短期內難以比擬的。README 對 MongoDB、Redis 的支援只出現在清單裡,沒有任何操作層面的說明。

什麼情況下它會是錯的工具

最明確的失敗模式是共用。如果你的團隊需要「每個人用自己的帳號連同一套 Chat2DB」,這個版本沒有對應機制,硬開 Web 介面等於把所有人的資料源憑證放在同一個沒有門鎖的房間裡。

第二個是金鑰遺失。README 的措辭是「replacing or losing it makes previously stored datasource passwords and AI model API keys unreadable」,沒有救援途徑的描述。這代表 ~/.config/chat2db-community/encryption.key 的備份策略必須在第一次啟動前就想好,而不是出事後再補。

第三個是資料庫不在支援清單內、又不是 JDBC 系。README 說新 JDBC 資料庫可以透過設定加入,這個逃生門只對 JDBC 敞開。若你用的引擎沒有 JDBC 驅動,這條路就不存在。

第四個是版本升級的資料搬遷。5.3.0 的目錄變更與 docker run、Compose 兩種資料位置不互通這兩件事,都會讓「先隨手跑起來、之後再整理」的做法付出代價。

最後是 AI 回應的處理。README 把 AI 回應列為 untrusted data,這等於承認模型輸出可能不可靠。如果你的流程是讓模型直接對正式環境執行 DDL,這個工具並沒有替你把關,它只是把風險標示出來。

編輯結論

如果你是一個人管好幾套資料庫、想在同一個視窗裡寫 SQL 又不想把 schema 送到別人的雲端,Chat2DB 社群版的定位正好對上,桌面版裝完就能連線,Docker 版則要先把加密金鑰準備好。反過來說,需要多人共用、要有帳號與權限切分、或要把 Web 介面開給整個團隊的場景,這個版本明確不適合,README 要求把 HTTP 服務綁在 127.0.0.1 或 ::1。採用前先確認三件事:你的資料庫是否在官方列出的 40 多種之內,否則得自己準備 JDBC 驅動;金鑰檔案 ~/.config/chat2db-community/encryption.key 有沒有獨立的備份位置;以及你從舊映像升級時,資料不會自動從 /root/.chat2db 搬到 /root/.chat2db-community。

官方來源

  1. Issues
  2. OtterMind/Chat2DB on GitHub
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記