REAL WORKSPACE · CONNECTION 11
连接数据库
通过 DBHub,让 Codex 安全地查询开发、测试、生产等多环境数据库。一个配置文件,零代码改造。
DBHubMCP多环境只读保护
01
最简单的理解
忘掉那些复杂的环境变量、启动脚本和多个文件。你只需要记住一句话。
核心理念
一个数据源就是一个环境。开发环境写一段,测试环境复制一段,生产环境再复制一段。最终只需要一个 dbhub.toml 配置文件,和一条添加到 Codex 的命令。
最终结构
一个配置文件 dbhub.toml
│
├── dev 开发环境
├── test 测试环境
└── prod 生产环境
02
第一步:创建配置文件
执行以下命令,创建配置目录并编辑配置文件。
terminal · 创建配置示例 · 路径固定
mkdir -p ~/.config/dbhub
vim ~/.config/dbhub/dbhub.toml
把下面内容完整复制进去,按你的实际数据库信息修改占位符:
~/.config/dbhub/dbhub.toml多环境配置模板
# ==============================
# 开发环境
# ==============================
[[sources]]
id = "dev"
description = "MySQL 开发环境"
type = "mysql"
host = "开发数据库地址"
port = 3306
database = "开发数据库名称"
user = "开发数据库用户名"
password = "开发数据库密码"
[[tools]]
name = "execute_sql"
source = "dev"
readonly = true
max_rows = 500
[[tools]]
name = "search_objects"
source = "dev"
# ==============================
# 生产环境
# ==============================
[[sources]]
id = "prod"
description = "MySQL 生产环境,只允许查询"
type = "mysql"
host = "生产数据库地址"
port = 3306
database = "生产数据库名称"
user = "生产数据库只读用户名"
password = "生产数据库密码"
[[tools]]
name = "execute_sql"
source = "prod"
readonly = true
max_rows = 200
[[tools]]
name = "search_objects"
source = "prod"
生产环境务必使用数据库本身的只读账号。readonly = true 是额外保护,不能代替数据库账号权限。
你真正需要修改的地方
每个环境只修改下面六项,其他内容先不要动:
每个环境的必填项六个字段
id = "环境名称"
host = "数据库地址"
port = 3306
database = "数据库名称"
user = "数据库用户名"
password = "数据库密码"
保存文件
- 01vim 中依次操作
按
i进入编辑模式,粘贴配置内容,按Esc,输入:wq回车保存退出。 - 02保护配置文件
这个文件包含数据库密码,不要放进 Git 仓库。
terminal · 设置文件权限仅自己可读写
chmod 600 ~/.config/dbhub/dbhub.toml
03
第二步:添加到 Codex
执行这一条命令,把 DBHub 注册为 Codex 的 MCP Server。
terminal · 注册 MCP一条命令搞定
codex mcp add dbhub -- \
npx -y @bytebase/dbhub@latest \
--transport stdio \
--config "$HOME/.config/dbhub/dbhub.toml"
terminal · 验证安装确认已添加
codex mcp list
如果看到 dbhub 就说明添加成功。第一次启动时 npx 需要下载 DBHub,可能需要等待一会儿。
!
版本固定建议
为了方便首次安装,这里使用了 @latest。确认能够正常连接后,生产使用建议固定具体版本,避免意外升级。
04
第三步:重启 Codex 并测试
重启 Codex 后,分别测试开发环境和生产环境。
- 重启 Codex,加载 DBHub MCP
- 分别测试 dev 和 prod 数据源
- 确认只读限制生效
- 确认返回行数限制生效
测试 Prompt · 开发环境
请使用 DBHub 的 dev 数据源,列出这个数据库中的所有表,只查询,不要修改数据。
- 多数据源下,DBHub 会根据 id 生成不同的工具
- 例如:
execute_sql_dev、search_objects_dev - 以及:
execute_sql_prod、search_objects_prod
测试 Prompt · 生产环境
请使用 DBHub 的 prod 数据源,列出数据库中的所有表,只查询,不要修改数据。
05
继续查看官方文档
DBHub 配置选项和数据库类型会持续增加,实际接入时以官方文档为准。