Claude Code 写后端接口、连数据库:只读账号加 MCP 查表结构,用拒绝规则和钩子保护 .env 与迁移目录

让 Claude Code 写后端接口并连数据库,最怕它读到密钥、改了线上数据或迁移文件。本文按官方文档讲:用只读账号经 MCP 查表结构,拒绝规则挡住 .env,钩子保护 migrations 目录,再给五段提示词和验证办法。

NNathaniel bigo··原创首发·AI 辅助撰写
9 分钟读完
资料核对于 2026-11-05 · 依据官方文档与公开资料整理 Pro 账号
本文根据 Claude Code 官方文档《Connect Claude Code to tools via MCP》《Best practices for Claude Code》《Choose a permission mode》《Common workflows》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 Anthropic 官方网站。

适用于谁

  • 想让 Claude Code 帮忙写 REST 接口、数据模型、迁移脚本的后端新手或全栈开发者;
  • 想让它直接看表结构、查数据来调试的人;
  • 担心它读到 .env、误改迁移文件或误动数据库的人。

结论先说

  1. 查数据库用 MCP 服务器,官方给的示例是 PostgreSQL 的 DBHub,并明确要求连接串里用只读用户,这样 Claude 跑的查询改不了数据。
  2. 本机开发库和脱敏数据优先。官方没有禁止连生产库,但本站建议别连:提示注入风险官方也提醒过,连接任何服务器前要确认你信任它。
  3. .env 用拒绝规则(deny)挡住,官方说拒绝规则在每种权限模式下都生效,包括自动模式和 bypassPermissions。
  4. 「绝不能动」的目录用钩子:官方的例子就是用 PreToolUse 钩子阻止对 migrations/ 的编辑。
  5. 测试需要的环境变量写进 CLAUDE.md,这是官方点名的「Claude 读代码看不出来」的信息之一。

后端项目的三层保护

图:本站根据 Claude Code 官方文档:Best practices 整理的示意图

第一步:先把规矩写进 CLAUDE.md

官方说,CLAUDE.md 只写 Claude 读代码得不到的东西,比如集成测试需要哪个环境变量、哪个目录看似没用其实在用、哪些改动需要迁移评审。官方的示例风格是三段:命令、约定、坑。

提示词 1:整理后端项目的 CLAUDE.md

text
请阅读项目,更新 CLAUDE.md,只保留 Claude 读代码不容易发现的信息:
1)安装、启动、跑全部测试、跑单个测试文件、运行迁移的确切命令;
2)接口的约定:路由放哪里、请求体校验放哪里、统一的错误返回写法;
3)数据库相关的坑:测试需要的环境变量名(只写变量名,不要写值)、哪些表不能直接改、迁移怎么评审;
4)不允许修改的目录。
总长度不超过 80 行,先把修改后的全文给我看。

第二步:挡住密钥

在 .claude/settings.json 里写权限规则。官方的示例是:

json
{
  "permissions": {
    "allow": ["Bash(pnpm tsc --noEmit)"],
    "ask": ["Bash(git push *)"],
    "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]
  }
}

官方解释了边界:Read 拒绝规则能拦住 cat .env 这样的常见读文件命令,但拦不住一个自己打开该文件的脚本。如果要在操作系统层面限制文件和网络,可以在会话里输入 /sandbox 打开沙箱,它会读取你的 Read 拒绝规则。涉及密钥的整体原则见 /guides/ai-coding-security-secrets-permissions,沙箱见 /guides/claude-code-sandbox-security。

迁移目录属于「零例外」的规则,官方的做法是钩子:它甚至给了提示词 write a hook that blocks edits to the migrations folder,生成后用 /hooks 查看结果。钩子的写法见 /guides/claude-code-hooks。注意官方的提醒:钩子只用于确实没有例外的规则,偏好类的放 CLAUDE.md 就好。

第三步:连数据库看表结构

官方 MCP 页面给出的 PostgreSQL 示例如下,其中用户名密码要换成只读用户的:

bash
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:密码@主机:5432/库名"

添加后在会话里输入 /mcp,看 db 这一行有没有勾。官方的提问示例包括「Show me the schema for the orders table」。MCP 的基本用法见 /guides/claude-code-mcp-setup。

有几点要自己把关(这些是建议,不是官方逐条规定):连接串里有密码,别把带密码的配置提交进 Git;用本机或测试库;官方提醒已连接的 MCP 服务器会把工具名和说明放进上下文,不用的可以在 /mcp 里关掉。

提示词 2:用只读账号了解数据模型

text
通过 db 这个 MCP 服务器,只做查询,不要执行任何会修改数据或表结构的语句。
请列出与「订单」相关的表,说明每张表的字段、主键、外键和索引,并画出表之间的关系。
指出你觉得设计上有风险的地方(例如缺索引、缺约束),但先只讨论,不要改任何文件。

第四步:写接口,每次带检查

官方在通用工作流里强调:描述要具体,比如用 @ 引用现有文件让它照着风格写,并写明「不要引入新库」。后端接口建议先让它按现有一个接口的模式来写。

提示词 3:照现有接口写新接口

text
请参考 @src/api/orders.ts 的写法,新增「按用户查询订单列表」的接口:支持分页、按状态过滤;请求参数用项目已有的校验方式校验;不要引入新依赖。
先在计划模式下给我方案,包括:路由、参数、返回结构、需要的索引或迁移。我批准后再动手。
实现后补测试:覆盖正常、参数错误、没有数据、越权访问这四种情况,并运行【测试命令】直到通过。

如果规则只对某一部分代码有效,官方建议放进 .claude/rules/ 并用 paths: 限定,例如只对 src/api/**/*.ts 生效。官方的示例规则是请求体必须用现有 schema 校验、每个新接口都要在 openapi.yaml 里登记。

第五步:迁移和数据修改要有人把关

提示词 4:写迁移,但先不执行

text
我要给 orders 表加一个 status_updated_at 字段。
请只生成迁移文件,不要执行迁移。同时说明:1)这个迁移是否可回滚,回滚怎么写;2)对已有数据有什么影响;3)上线前我需要做的检查。
不要修改已有的迁移文件。

提示词 5:对照规格审查

text
请用子智能体审查当前改动:1)新增的接口是否都做了登录和权限检查;2)是否存在拼接 SQL 的写法;3)日志和错误信息有没有泄露敏感信息;4)迁移是否可以回滚。
只报告影响正确性或安全的问题,跳过风格问题,没有就写「未发现」。

关于 /code-review,见 /guides/claude-code-code-review-security-review-commands。

后端出问题时先查什么

图:本站根据官方文档整理的示意图

排查接口问题时怎么交代信息

官方在修复缺陷的写法里建议:告诉 Claude 复现问题的命令、报错的堆栈,以及问题是偶发还是必现。后端排错同样适用。你可以这样描述:请求的方法和地址、请求体示例(去掉真实用户数据)、期望的返回、实际的返回和状态码、日志里的报错原文。有了这些,Claude 往往能直接定位到处理函数,再通过只读查询对照数据库里的数据。如果涉及多个服务,先让它画出请求经过的步骤,再逐段验证,而不是一上来就改代码。线上日志里常含有用户信息,贴给任何外部服务之前先脱敏。

常见问题

Q:能直接让它改线上数据库吗?

不建议。官方示例强调只读用户,改数据应由你自己评审后执行。

Q:每次运行命令都要确认,太慢?

官方有 acceptEdits 等权限模式,详见 /guides/claude-code-permission-modes,但对数据库、推送这类动作建议保持询问。

订阅和额度

后端开发的会话通常较长,建议按功能分会话。订阅选择见 /chongzhi/claude-code,价格和额度以官方页面当前显示为准。

相关教程

参考资料

  • Claude Code 文档:Connect Claude Code to tools via MCP — https://code.claude.com/docs/en/mcp
  • Claude Code 文档:Best practices for Claude Code — https://code.claude.com/docs/en/best-practices
  • Claude Code 文档:Choose a permission mode — https://code.claude.com/docs/en/permission-modes
  • Claude Code 文档:Common workflows — https://code.claude.com/docs/en/common-workflows

Nathaniel 的更多内容

  1. 01

    Claude Code 在 Windows 上的常见坑:Git Bash 还是 PowerShell、路径反斜杠、假报错、WSL 怎么选

    Windows 上用 Claude Code,装好之后最容易踩的是:用哪个 shell、路径写法不一致、grep 没匹配就报错、钩子没生效、WSL 和原生怎么选。本文逐条按官方文档整理原因和处理办法,附三段提示词和一张对照表。

    Claude0
  2. 02

    Claude Code Hooks 实战「提交前自动跑测试」:PreToolUse 拦住 git commit,测试不过就退出码 2,附 Windows 注意点

    只写一个完整例子:让 Claude Code 每次要执行 git commit 之前,先自动跑项目测试,没通过就拦下并把输出交给它修。本文按官方 Hooks 文档给出脚本、settings.json 配置、测试方法、排错和 Windows 的两处坑。

    Claude0
  3. 03

    Claude Code 自定义斜杠命令与 Skill 实战:从零写一个「生成更新日志」的 /release-notes,含传参、预执行命令和调试

    概念看过了,还是不知道从哪下手?本文按 Claude Code 官方「Extend Claude with skills」写一个完整可用的例子:用 /release-notes 根据 git 记录生成更新日志,覆盖目录、frontmatter、传参、预执行命令、预授权和调试。

    Claude0
  4. 04

    Claude Code 部署网站:先写 Dockerfile 和 compose 在本机跑通,再按清单上云服务器,别让它直接改线上

    想让 Claude Code 帮你把网站部署到云服务器。本文只写通用做法,按 Docker 官方文档讲:让它写 Dockerfile、.dockerignore 和 compose,在本机跑通,端口和数据卷怎么设,再给出上线清单,并说明为什么不要让它直接动线上机器。

    Claude0
  5. 05

    Claude Code 写爬虫与数据清洗:先查 robots.txt 和网站条款,控制频率,原始数据留一份再清洗

    想让 Claude Code 写爬虫抓数据再清洗。本文先讲合规:robots.txt 不是授权也不是安全措施、网站条款要自己读;再讲怎么用 Python 标准库检查规则、小样本先试、保存原始数据,以及用 pandas 清洗,附四段提示词。

    Claude0
  6. 06

    Claude Code 写 Chrome 扩展:按 Manifest V3 起步,加载未打包的扩展,改了哪些文件要重新加载

    想让 Claude Code 帮你写一个 Chrome 扩展。本文按 Chrome 官方扩展文档讲:manifest.json 的最小写法、在 chrome://extensions 加载未打包的扩展、哪些改动要刷新、怎么看控制台和报错,再给四段提示词,以及权限要尽量少。

    Claude0

同产品的其他教程

  1. 01

    Claude Code 写安卓 App:Android Studio 建项目、让它用 gradlew 编译安装,报错和日志怎么喂给它

    想让 Claude Code 帮你写安卓 App。官方文档没有专门的安卓教程,本文把 Claude Code 官方工作流和安卓官方命令行文档拼在一起:Android Studio 建项目、gradlew 编译安装、模拟器和真机、测试与日志,附四段提示词。

    Claude0
  2. 02

    Claude Code 用数据库 MCP 查数据、出报表:只读账号、先看口径再看数字,结果别一次拉太多行

    想用自然语言让 Claude Code 查数据库、出统计报表,而不是写后端接口。本文按官方 MCP 页面和 DBHub 说明讲:怎么连 PostgreSQL、MySQL、SQLite、输出太大怎么办、怎么让它先说明口径、怎么核对数字,附三段提示词。

    Claude0
  3. 03

    Claude Code 配 Figma MCP 还原设计稿:插件或一条命令安装,复制图层链接,小块小块地让它出代码

    想让 Claude Code 照 Figma 设计稿写前端代码。本文按 Figma 官方开发者文档讲:远程服务器地址、插件和手动两种安装、怎么复制图层链接、为什么要选小块、座位类型与调用次数限制,并给三段还原设计稿的提示词。

    Claude0
  4. 04

    Claude Code 管理 GitHub issue:用 gh 命令还是 GitHub MCP,怎么装、怎么限权、怎么让它分拣和回复 issue

    让 Claude Code 读 issue、分拣标签、起草回复、关联 PR,有两条路:装好 gh 命令行直接用,或连 GitHub 官方 MCP 服务器。本文按两边官方文档讲安装命令、令牌权限、只读模式,并给出三段分拣提示词和限权设置。

    Claude0
  5. 05

    Claude Code 配 Playwright MCP 做浏览器测试:一条命令安装,让它打开页面、点按钮、读控制台,再把流程写成测试

    想让 Claude Code 自己打开浏览器测试你的网页。本文按微软 Playwright MCP 官方仓库和 Claude Code 官方 MCP 文档讲:安装命令、怎么确认连上、有头无头与隔离参数、一次测试的提示词,以及它不是安全边界这件事。

    Claude0
  6. 06

    Claude Code 写文档、README 和代码注释:先让它读代码再动笔,指定风格,写完逐条核对命令能不能跑

    想让 Claude Code 给项目补 README、接口文档和注释,又怕它编造不存在的命令和参数。本文按官方「Handle documentation」工作流讲:先找没有文档的代码、指定风格、写完核对,附四段可复制提示词和验证办法。

    Claude0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~