Chat2DB
AI驱动的全功能数据库客户端和SQL工作台,支持MySQL、PostgreSQL、ClickHouse等30+数据库,内嵌AI助手可自然语言生成、解释和优化SQL。亮点:跨平台桌面应用+Web版,支持接入自定义AI模型,开源社区版功能完整,适合开发者和DBA日常使用。注意其source-available license,非纯Apache 2.0。
README
一款面向开发者、DBA(数据库管理员)、分析师和数据团队的 AI 驱动的数据库客户端及 SQL 工作台。
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 工具**。
截图
| 仪表盘与图表 | 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 ⭐️ —— 这真的很有帮助!
加密密钥
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 进程所有者可读。
密钥配置按以下顺序解析:
- JVM 属性
chat2db.community.encryption-key(包含 Base64 密钥)。 - 环境变量
CHAT2DB_COMMUNITY_ENCRYPTION_KEY(包含 Base64 密钥)。 - JVM 属性
chat2db.community.encryption-key-file(包含密钥文件路径)。 - 环境变量
CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE(包含密钥文件路径)。 - 默认文件
~/.config/chat2db-community/encryption.key。
首先配置的值具有权威性。空白值、格式错误的 Base64、解码后不是 32 字节的密钥或无效的密钥文件会导致启动失败,而不会回退到下一个来源。建议使用基于文件的配置,因为可以避免将密钥值直接放在进程参数或环境变量中。
自动创建密钥文件取决于 chat2db.mode,而非 chat2db.gui。社区桌面模式(chat2db.runtime.mode=community 且 chat2db.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。
社区与支持
- GitHub Issues:报告 bug 或请求功能
- GitHub Discussions:提问并分享想法
- Discord:加入我们的 Discord 服务器
- 邮箱:Chat2DB@ch2db.com
致谢
感谢每一位为 Chat2DB 做出贡献的人。
许可证
Chat2DB Community 5.3.0 及后续版本采用本仓库中的许可条款。这是一份基于 Apache License 2.0 并附加条件的源代码可用许可证。5.3.0 版本之前发布的 Chat2DB 版本(包括 0.3.7 及更早的历史标签)仍遵循 Apache License 2.0。



