OtterMind Chat2DB
由 OtterMind 提供支持 —— 一款面向开发者、DBA、分析师和数据团队的 AI 驱动数据库客户端与 SQL 工作台。
什么是 Chat2DB?
Chat2DB 社区版是一款免费、跨平台的数据库客户端,支持 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 图
- 可视化数据管理
- 数据导入导出
截图
快速开始
选项 1:桌面应用
从 [GitHub Releases](https://github.com/OtterMind/Chat2DB/releases) 下载适用于你平台的安装程序,安装后即可开始连接数据库。无需额外配置。
选项 2: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 社区版 5.3.0 使用独立的
/root/.chat2db-community目录,不会自动从早期使用/root/.chat2db的镜像迁移数据。
安全说明
Chat2DB 社区版是一款单用户、本地优先的应用。它没有用户账户或用户间的授权边界。请将 HTTP 服务绑定到 127.0.0.1 或 ::1,不要将其暴露给其他用户或不受信任的网络。
自定义 JDBC 驱动是可执行的 Java 代码——仅从你信任的来源安装。导入的配置文件、归档文件、SQL 文件、数据库内容以及 AI 响应均被视为不受信任的数据。
有关完整的信任边界和漏洞报告流程,请参阅[安全策略](https://github.com/OtterMind/Chat2DB/security/policy)。
如果你觉得这个项目有用,请给我们一个 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 字节的密钥或无效的密钥文件会导致启动失败,而不会回退到下一个来源。建议使用基于文件的配置。