开源项目

Chat2DB

Chat2DB

AI驱动的全功能数据库客户端和SQL工作台,支持MySQL、PostgreSQL、ClickHouse等30+数据库,内嵌AI助手可自然语言生成、解释和优化SQL。亮点:跨平台桌面应用+Web版,支持接入自定义AI模型,开源社区版功能完整,适合开发者和DBA日常使用。注意其source-available license,非纯Apache 2.0。

README

Chat2DB

一款面向开发者、DBA(数据库管理员)、分析师和数据团队的 AI 驱动的数据库客户端及 SQL 工作台。

英文版 README 简体中文版自述文件 日文版 README 西班牙语版 README 韩语版 README

Chat2DB 是什么?

Chat2DB Community 是一款免费的跨平台数据库客户端,支持 Windows、macOS 和 Linux。它完全在本地运行,集成了功能齐全的 SQL 工作台和可连接自有模型的 AI 助手。

  • 30+ 种数据库 — 包括 MySQL、PostgreSQL、Oracle、SQL Server、ClickHouse、MongoDB、Redis、SQLite、MariaDB、TiDB、Hive、DB2、Snowflake、BigQuery、Elasticsearch 等,并支持通过插件扩展。
  • SQL 工作台 — 编辑、补全、格式化、执行、保存 SQL 及执行历史记录。
  • AI 助手 — 自带 AI 模型,可用自然语言生成、解释和优化 SQL。
  • 数据库管理 — 浏览元数据、管理表和对象(DDL/DML),并支持原地编辑数据。
  • 数据导入导出仪表盘与图表,以及**支持 MCP 的开源 CLI 工具**。

Chat2DB 工作台,包含 SQL 编辑器和 AI 助手 — 点击观看介绍视频

截图

仪表盘与图表 ER 图
仪表盘与图表 ER 图
可视化数据管理 数据导入导出
可视化数据管理 数据导入导出

快速开始

方式一:桌面应用

GitHub Releases 下载对应平台的安装包,安装后即可连接你的数据库。无需额外配置。

方式二:Docker

要求:Docker 19.03.0+、Docker Compose 2.0.0+(仅 Compose 方式需要)、2+ CPU 核心、4+ GiB 内存。

首先创建加密密钥(参见加密密钥了解重要性),然后启动容器:

# 从仓库检出目录执行一次。重复运行会复用已有的有效密钥。
git clone https://github.com/OtterMind/Chat2DB.git && cd Chat2DB
./script/security/init-community-encryption-key.sh

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

然后在浏览器中打开 http://localhost:10825

或者使用自带的 Compose 定义:

./script/security/init-community-encryption-key.sh
docker compose --file docker/docker-compose.yml up --detach

注意事项:

  • 更新时,拉取新镜像,删除旧容器,再次运行启动命令。重建时保留 ~/.config/chat2db-community/encryption.key
  • docker run 示例将应用数据存储在 $HOME/.chat2db-community-docker 中;Compose 定义使用 chat2db-community-data 命名卷。这两个位置不共享数据。
  • Chat2DB Community 5.3.0 使用独立的 /root/.chat2db-community 目录,不会自动迁移来自早期镜像(使用 /root/.chat2db)的数据。

安全说明

Chat2DB Community 是单用户、本地优先的应用。它没有用户账户或多用户间的授权边界。请将 HTTP 服务绑定到 127.0.0.1::1,不要暴露给其他用户或不受信任的网络。

自定义 JDBC 驱动是可执行的 Java 代码——仅从可信来源安装。导入的配置文件、归档文件、SQL 文件、数据库内容以及 AI 响应均视为不可信数据。请参阅安全策略了解完整的信任边界和漏洞报告流程。

如果您觉得本项目有用,请给我们一个 Star ⭐️ —— 这真的很有帮助!

在 GitHub 上给 Chat2DB 加星

加密密钥

Chat2DB Community 使用 AES-256-GCM 加密存储的数据源密码和 AI 模型 API 密钥,加密密钥基于每个安装实例生成。从仓库检出目录创建一次(需要 openssl):

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

密钥被写入 ~/.config/chat2db-community/encryption.key请单独备份此文件,并在升级和容器重建时保留它——替换或丢失该文件会导致之前存储的数据源密码和 AI 模型 API 密钥无法读取。在未提供有效密钥时,Web/无头模式启动会失败;仅桌面模式会自动创建缺失的密钥。

密钥配置参考(自定义路径、解析顺序、验证)

密钥必须是有效的 Base64,解码后恰好为 32 字节。内置初始化器生成标准填充形式:以 = 结尾的 44 个 Base64 字符。这是加密密钥材料,不是人类可读的密码。数据源密码和 AI API 密钥使用相同的密钥,但使用独立的认证 AAD 值,因此一种用途的密文无法作为另一种用途解密。

要使用自定义路径,请将其传递给脚本,并配置相同的路径启动 Chat2DB:

./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 \
    -Dserver.port=10825 \
    -jar chat2db-community-server/chat2db-community-start/target/chat2db-community.jar

脚本的密钥文件路径优先级:位置参数、CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE 环境变量、默认路径。它会复用有效的常规文件,拒绝符号链接和非常规文件,并拒绝覆盖无效文件。请确保密钥仅对 Chat2DB 进程所有者可读。

密钥配置按以下顺序解析:

  1. JVM 属性 chat2db.community.encryption-key(包含 Base64 密钥)。
  2. 环境变量 CHAT2DB_COMMUNITY_ENCRYPTION_KEY(包含 Base64 密钥)。
  3. JVM 属性 chat2db.community.encryption-key-file(包含密钥文件路径)。
  4. 环境变量 CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE(包含密钥文件路径)。
  5. 默认文件 ~/.config/chat2db-community/encryption.key

首先配置的值具有权威性。空白值、格式错误的 Base64、解码后不是 32 字节的密钥或无效的密钥文件会导致启动失败,而不会回退到下一个来源。建议使用基于文件的配置,因为可以避免将密钥值直接放在进程参数或环境变量中。

自动创建密钥文件取决于 chat2db.mode,而非 chat2db.gui。社区桌面模式(chat2db.runtime.mode=communitychat2db.mode=DESKTOP)会在未配置内联密钥且文件缺失时创建选定的密钥文件。任何非桌面模式(包括正常的 Web/无头启动)永远不会创建缺失的密钥,会失败直到提供或初始化了有效的密钥。解析后的密钥在进程生命周期内缓存,因此更改密钥配置需要重启应用。

从源码构建

前提条件

  • Java 运行时:Eclipse Temurin 17
  • Node.js 18.17.0 或更高版本
  • Maven 3.8 或更高版本

克隆仓库

git clone https://github.com/OtterMind/Chat2DB.git

前端

使用 Yarn 以及已检入的 lockfile。

cd Chat2DB/chat2db-community-client
yarn install --frozen-lockfile
yarn run start:community:hot

后端

cd Chat2DB
mvn -B clean package -Dmaven.test.skip=true -Dchat2db.finalName=chat2db-community \
    -f chat2db-community-server/pom.xml \
    -pl chat2db-community-start -am
./script/security/init-community-encryption-key.sh
java -Dloader.path=chat2db-community-server/chat2db-community-start/target/lib \
    -Dchat2db.gui=false \
    -Dchat2db.runtime.mode=community \
    -Dchat2db.mode=WEB \
    -Dchat2db.network.status=OFFLINE \
    -Dchat2db.community.encryption-key-file="$HOME/.config/chat2db-community/encryption.key" \
    -Dserver.address=127.0.0.1 \
    -Dserver.port=10825 \
    -Dspring.profiles.active=dev \
    -jar chat2db-community-server/chat2db-community-start/target/chat2db-community.jar

构建本地 Docker 镜像

./docker/docker-build.sh 5.3.0 chat2db/chat2db:5.3.0

社区版与商业版

社区版包含上述完整的本地数据库客户端,并支持自定义 AI 模型。商业 Pro 和企业版基于相同内核,并增加托管 AI 服务、用户账户、云存储和多设备同步、团队协作与治理功能。详情请见 chat2db.ai

贡献

我们欢迎社区提交 bug 报告、功能请求、文档改进、测试反馈以及 pull request。

在提交 issue 或 pull request 之前,请阅读我们的贡献指南。它解释了如何报告 bug、提出改进建议以及如何让维护者更容易评审贡献。

  • 对于 bug 和功能请求,请使用 GitHub Issues
  • 对于问题、设置帮助和开放式讨论,请使用 GitHub Discussions
  • 如果您的 pull request 与某个 issue 相关,请在 PR 描述中链接该 issue。

社区与支持

致谢

感谢每一位为 Chat2DB 做出贡献的人。

Chat2DB 贡献者

许可证

Chat2DB Community 5.3.0 及后续版本采用本仓库中的许可条款。这是一份基于 Apache License 2.0 并附加条件的源代码可用许可证。5.3.0 版本之前发布的 Chat2DB 版本(包括 0.3.7 及更早的历史标签)仍遵循 Apache License 2.0。

开源项目OtterMind2026-07-24原文

相关内容