OtterMind/Chat2DB
GitHub: OtterMind/Chat2DB
一款 AI 驱动的跨平台数据库客户端和 SQL 工作区,支持三十多种数据库并允许用户接入自有 AI 模型来生成、解释和优化 SQL。
Stars: 26167 | Forks: 2874
An AI-powered database client and SQL workspace for developers, DBAs, analysts, and data teams.
[](https://cdn.chat2db-ai.com/website/video/first_sceen_en.mp4)
### 截图
| 仪表盘和图表 | ER 图 |
| --- | --- |
|  |  |
| 可视化数据管理 | 数据导入和导出 |
| --- | --- |
|  |  |
## 快速开始
### 方式 1:桌面应用
从 [GitHub Releases](https://github.com/OtterMind/Chat2DB/releases) 下载适合您平台的安装程序,安装并开始连接您的数据库。无需进行其他设置。
### 方式 2:Docker
环境要求:Docker 19.03.0+、Docker Compose 2.0.0+(Compose V2,仅适用于 Compose 方式)、2+ CPU 核心、4+ GiB 内存。
首先创建加密密钥(了解原因请参阅[加密密钥](#encryption-key)),然后启动容器:
```
# 从 repository checkout 运行一次。重新运行会复用相同的有效 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 社区版 5.3.0 使用独立的 `/root/.chat2db-community` 目录,不会自动从早期使用 `/root/.chat2db` 的镜像中迁移数据。
## 安全说明
Chat2DB 社区版是一款单用户、本地优先的应用程序。它没有用户
账户或用户之间的授权边界。请将 HTTP 服务
绑定到 `127.0.0.1` 或 `::1`,不要将其暴露给其他用户或
不受信任的网络。
自定义 JDBC 驱动程序是可执行的 Java 代码 — 请仅从
您信任的来源安装它们。导入的配置文件、归档文件、SQL 文件、
数据库内容和 AI 响应仍属于不受信任的数据。完整的
信任边界和漏洞报告流程,请参阅
[安全政策](SECURITY.md)。
## 加密密钥
Chat2DB 社区版使用 AES-256-GCM 通过独立于每次安装的密钥对存储的数据源密码和 AI 模型 API 密钥进行加密。在检出仓库后创建一次(需要 `openssl`):
```
./script/security/init-community-encryption-key.sh
```
该密钥将写入 `~/.config/chat2db-community/encryption.key`。**请单独备份此文件,并在升级和容器重建期间妥善保管** — 替换或丢失它将导致之前存储的数据源密码和 AI 模型 API 密钥无法读取。如果未提供有效的密钥,Web/无头(headless)模式启动将失败;只有桌面模式会自动创建缺失的密钥。
密钥配置参考(自定义路径、解析顺序、验证)
密钥必须是有效的 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. 包含 Base64 密钥的 JVM 属性 `chat2db.community.encryption-key`。 2. 包含 Base64 密钥的环境变量 `CHAT2DB_COMMUNITY_ENCRYPTION_KEY`。 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=community` 且 `chat2db.mode=DESKTOP`)会在未配置内联密钥且文件缺失时创建选定的密钥文件。任何非桌面模式,包括正常的 Web/无头(headless)启动,都不会创建缺失的密钥,并且在提供或初始化有效密钥之前将一直启动失败。解析出的密钥会在进程生命周期内被缓存,因此更改密钥配置需要重启应用程序。标签:AI助手, GUI工具, JS文件枚举, MITM代理, SQL客户端, 域名枚举, 数据库工具, 数据库管理, 请求拦截
