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 條評論

登入 後參與評論

還沒有評論,來搶沙發~