Crescendo Lab 文件 部署
正體中文
註冊開始用

為專案加上 PostgreSQL 或 MySQL 資料庫

建立獨立的 PostgreSQL 或 MySQL 資料庫,連上專案,讓專案自己的帳號擁有資料表,並從 Claude Code 或 Codex 透過 MCP 建立資料表。

最後更新

最快的做法:讓部署幫你建立#

程式讀取資料庫連線變數,例如 DATABASE_URL、POSTGRES_URL、MYSQL_URL,或 DB_HOST 和 DB_PASSWORD,而專案還沒有替它設定值時,從 AI 工具部署或在主控台上傳,都會在建置開始前建立一個大小 S 的資料庫並連上。預設是 PostgreSQL;程式讀取 MYSQL_ 開頭的名稱時改用 MySQL。你只要請 AI 工具部署就好。

prompt
把這個資料夾部署到 Agent Lab。它透過 DATABASE_URL 使用 PostgreSQL。

什麼時候會建立、什麼時候不會,以及 AI 工具等待時看到什麼,見程式需要的資料庫和快取。這一頁其餘的內容,是自己建立和管理資料庫的做法。

你會得到什麼#

每個資料庫都是一個獨立的 Google Cloud SQL 執行個體,有自己的對外位址,不和其他組織共用。

項目選項
資料庫類型PostgreSQL 18(預設)、17 或 16;主控台有列出時,也可以選 MySQL 8.4 或 9.7。建立後不能更改。
大小S:共用核心、0.6 GB 記憶體,只適合開發與測試,沒有 SLA。M:1 vCPU、3.75 GB。L:2 vCPU、8 GB。XL:4 vCPU、16 GB。
區域台灣(asia-east1)、日本(asia-northeast1)、美國(us-central1)或歐洲(europe-west1)。建立後不能更改。
儲存空間至少 10 GB。可以增加(也可以設定成自動增加),但不能縮小。
備份自動備份。最近 7 天的時間點復原是 Business 的加購項目(見下方)。

同一個執行個體裡可以放好幾個資料庫,例如每個專案一個。每個資料庫屬於一個環境,專案只能連到同一個環境裡的資料庫。

各方案包含什麼#

方案資料庫數量大小時間點復原
Free1S無
Pro2S、M無
Team10S–XL無
Business依合約S–XL加購
  • Free:資料庫不收費,計入免費額度。要先綁定信用卡(不會扣款),連續 7 天沒有使用會自動停止,到資料庫頁面再啟動就好。
  • 付費方案:資料庫一建立就開始計費。停止的資料庫只收儲存空間的費用。價格見價格頁。
  • 資料庫會產生費用,所以只有組織的擁有者和管理員可以建立。

建立資料庫#

  1. 開啟 資料庫,按 建立資料庫。
  2. 選擇 資料庫類型 和 版本,填 名稱(最多 63 個字元),選擇 機器規格、離會連線的服務最近的 區域,以及儲存空間。
  3. 加密方式維持 只允許 SSL 連線,除非你有特別的理由(見連線安全)。
  4. 在連線設定加入會連線的 IPv4 位址,或打開 允許 Agent Lab 上的服務連線。
  5. 按 建立資料庫。

建立通常要 10–15 分鐘。大小 S 的 MySQL 可能更久。

連上專案#

連上之後,專案會有自己的資料庫帳號,密碼由 Agent Lab 產生,連線資訊直接寫進專案的隱藏值。沒有人看得到密碼,你和 AI 工具都看不到。

prompt
把 orders-api 專案連到 orders 資料庫。先讀程式碼,看它用哪些變數。

助理會先看程式要讀哪些變數,再呼叫 databases_connect_app,告訴它每個變數名稱對應連線的哪一部分:

json
{
  "database": "orders",
  "site": "<sites_list 裡的專案 id>",
  "variables": { "DATABASE_URL": "url" }
}

其他部分還有 jdbcUrl、host、port、hostPort、database、user、password、sslmode 和 ca(伺服器 CA)。預覽會列出要寫入、以及會被取代的變數;你同意後,它建立帳號並重新啟動專案。

連上時會發生這些事:

  • 專案的帳號擁有自己的資料庫。它可以建立和修改資料表,所以 ORM 在啟動時跑的 migration(Prisma、Drizzle、Django、Rails、Laravel、TypeORM 等)都能執行。它碰不到同一個執行個體裡的其他資料庫,也不能建立帳號或資料庫。如果專案不需要這麼多權限,可以改用 write(讀寫資料,不能改結構)或 read。
  • 專案還沒有資料庫時,會在執行個體裡建立一個。名稱沿用專案的網址標籤,連字號換成底線;也可以自己取名:小寫英文字母開頭,只用小寫英文字母、數字和底線,PostgreSQL 最多 50 個字元,MySQL 最多 64 個字元。
  • 允許 Agent Lab 上的服務連線:如果原本沒有打開,會一併打開。
  • 加密:PostgreSQL 的 url 會帶 sslmode=require。MySQL 的 url 不帶 TLS 設定,因為每個 driver 的寫法都不一樣,請在你的 driver 裡打開 TLS。
  • 要求用戶端憑證的資料庫,目前還不能這樣連。請手動連上專案,或把加密方式改成 只允許 SSL 連線。

要中斷連線,databases_disconnect_app 會移除帳號和它寫入的變數,資料會保留。databases_rotate_app_password 會換一組新密碼並重新啟動專案。

用 AI 工具建立資料表、查資料#

在已經連上 Agent Lab 的 Claude Code、Codex 或其他 MCP 用戶端裡,不需要資料庫密碼,也不需要 SQL 用戶端:

prompt
在 orders 資料庫建立 notes 資料表,欄位有 id、body 和 created_at 時間,建好後列出所有資料表。
  • list_tables 列出資料表,apply_migration 執行一個有名稱的 migration(PostgreSQL 包成一個交易;MySQL 一句一句執行),execute_sql 執行一個查詢。執行前助理會先把 SQL 給你看。
  • 每個 migration 的名稱和 SQL 都會記在資料庫自己的 agentlab_data_control.migrations 資料表。
  • 擁有者、管理員、資料庫的建立者和資料庫管理員本來就能寫入。其他成員需要在資料庫的 資料權限 給他 Reader(唯讀) 或 Writer(讀寫),或用 databases_grant。

參數、限制和範例見 MCP 工具 › 資料庫資料工具。

從自己的電腦或其他主機連線#

在資料庫 設定 分頁的 已授權的網路 加入你的 IPv4 位址,再用 使用者與資料庫 裡的使用者,連到 總覽 分頁上的位址。server-ca.pem 在 憑證 分頁下載。

sh
psql "host=<address> port=5432 dbname=orders user=<user> sslmode=verify-ca sslrootcert=server-ca.pem"
sh
mysql --host=<address> --port=3306 --user=<user> --password \
  --ssl-mode=VERIFY_CA --ssl-ca=server-ca.pem orders

請用 verify-ca(PostgreSQL)或 VERIFY_CA(MySQL);verify-full 和 VERIFY_IDENTITY 遇到 IP 位址會失敗。MySQL 9.7 只接受 caching_sha2_password,請用 MySQL 8.0 以上的用戶端、Connector/J 8.0 以上或 PHP 7.4 以上。總覽 分頁有 Node.js、Python、Go、Java 和 PHP 的範例。

連線安全#

設定作用
已授權的網路最多 20 個可以連線的公開 IPv4 位址或 CIDR 範圍,其他位址都連不進來。
允許 Agent Lab 上的服務連線加入 Agent Lab 的對外位址。所有組織的服務共用這個位址,擋住別人的是密碼。
允許所有 IP(0.0.0.0/0)網路上任何人都能嘗試連線。
只允許 SSL 連線預設值,也是建議值:每個連線都用 TLS。
需要受信任的用戶端憑證除了密碼,每個連線還要出示在 憑證 分頁核發的用戶端憑證。
允許未加密的網路流量用戶端可以不用 TLS 連線。不建議。

用戶端憑證在 憑證 分頁按 核發憑證。私密金鑰只顯示一次,關掉對話框前請先下載 client-key.pem。要換憑證時,先核發新的再撤銷舊的,用戶端就能不中斷地換過去。MySQL 撤銷憑證時會中斷目前所有連線,持有有效憑證的用戶端會自己重新連上。

使用憑證時,把它們加進連線設定:

sh
psql "host=<address> port=5432 dbname=orders user=<user> sslmode=verify-ca sslrootcert=server-ca.pem sslcert=client-cert.pem sslkey=client-key.pem"

要求憑證的 MySQL 資料庫,在沒有憑證時回應的是 Access denied,跟密碼錯誤一模一樣,所以請先檢查憑證。

資料庫的 連線紀錄 會列出最近 30 天誰連過、從哪個位址、登入失敗的原因。databases_connections 也回傳同樣的內容。

把現有的資料庫搬進來#

用 pg_dump 或 mysqldump 匯出,再在資料庫那一列按 匯入資料,或請 AI 工具用 databases_import 匯入。Agent Lab 執行前會先檢查每一句,列出不接受的語句和行號。匯出指令和會被略過的內容,見 MCP 工具 › 把資料庫搬進來。

停止、啟動和刪除#

  • 停止會保留資料和位址,所有連線都會中斷。付費方案仍會收儲存空間的費用。啟動後幾分鐘內就會在原本的位址恢復服務。
  • 刪除資料庫要先輸入它的名稱。勾選 刪除前建立最後備份 可以留下最後一份備份;已停止的資料庫會先啟動再備份。
  • 從 AI 工具:databases_stop 和 databases_start。

還原到某個時間點#

Business 方案可以在資料庫的 設定 打開 時間點復原(PITR)。之後用 還原到某個時間點,選打開之後、最近 7 天內的任何時刻。

  • 還原會建立一個新的資料庫,裡面是那個時刻的資料,原本的資料庫不會變動。新資料庫計入方案的資料庫數量,另外計費,而且時間點復原預設是關閉的。
  • MySQL 打開或關閉時間點復原時會重新啟動,連線會中斷幾分鐘;大小 S 最久大約 20 分鐘。
  • 只有擁有者和管理員可以發起還原。