什么是 Chat2DB?
Chat2DB Community 是一个免费的跨平台数据库客户端,适用于 Windows、macOS 和 Linux。它完全运行在您的电脑上,将功能齐全的 SQL 工作区与您可以连接自己模型的 AI 助手结合在一起。
- 支持 40 种数据库 — 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,以及通过插件支持的更多数据库 — 新的 JDBC 数据库可以通过配置添加,无需更改代码。
- SQL 工作区 — 编辑、自动完成、格式化、执行、保存 SQL 和执行历史记录。
- AI 助手 — 使用您自己的 AI 模型,用自然语言生成、解释和优化 SQL。
- 数据库管理 — 浏览元数据,管理表和对象(DDL/DML),并直接编辑数据。
- 数据导入和导出、仪表盘和图表,以及一个 支持 MCP 的开源 CLI。
截图
| 仪表板和图表 | ER 图 |
|---|---|
| 可视化数据管理 | 数据导入与导出 |
|---|---|
快速开始
选项 1:桌面应用
从 GitHub Releases 下载适用于您平台的安装程序,安装它,然后开始连接您的数据库。无需进一步设置。
选项 2:Docker
要求:Docker 19.03.0、Docker Compose 2.0.0(仅适用于 Compose 版本的 Compose V2)、2 个 CPU 核心、4 GiB 内存。
首先创建加密密钥(参见 加密密钥 了解其重要性),然后启动容器:
# Run once from a repository checkout. Re-running reuses the same valid key.
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 社区使用 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。
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
数据库指南
将 Chat2DB Community 连接到特定数据库的分步指南:
- BigQuery — 通过 Google Cloud 服务账户访问 Google BigQuery。
Community 与商业版对比
Community 版本包含上述所有本地数据库客户端功能,包括自定义 AI 模型支持。商业版 Pro 和 Enterprise 版本基于相同核心构建,并添加了托管 AI 服务、用户账户、云存储和多设备同步,以及团队协作和治理功能。详情请见 chat2db.ai。
贡献
我们欢迎社区提交的错误报告、功能请求、文档改进、测试反馈和拉取请求。
在创建 issue 或提交拉取请求之前,请先阅读我们的 贡献指南。其中说明了如何报告错误、提出改进建议以及如何让维护者更容易审查贡献。
- 关于错误和功能请求,请使用 GitHub Issues。
- 关于问题、安装帮助和开放式讨论,请使用 GitHub Discussions。
- 如果您的拉取请求与某个 issue 相关,请在 PR 描述中链接该 issue。
社区与支持
- GitHub Issues: 报告错误或请求功能
- GitHub Discussions: 提问和分享想法
- Discord: 加入我们的 Discord 服务器
- 电子邮件: Chat2DB@ch2db.com
致谢
感谢所有为 Chat2DB 做出贡献的人。
许可证
Chat2DB 社区版 5.3.0 及更高版本可根据 此仓库中的许可条款 使用。这是一个基于 Apache 许可证 2.0 并附加额外条件的源代码可用许可。5.3.0 之前发布的 Chat2DB 版本,包括 0.3.7 版本及更早的历史标签,仍然适用于 Apache 许可证 2.0。