---
title: 為專案加上 PostgreSQL 或 MySQL 資料庫
description: 建立獨立的 PostgreSQL 或 MySQL 資料庫，連上專案，讓專案自己的帳號擁有資料表，並從 Claude Code 或 Codex 透過 MCP 建立資料表。
url: https://agentlab.cresclab.com/docs/zh-tw/deploy/databases
language: zh-Hant
updated: 2026-10-28
---

# 為專案加上 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 工具等待時看到什麼，見[程式需要的資料庫和快取](https://agentlab.cresclab.com/docs/zh-tw/deploy/mcp-tools.md#auto-provision)。這一頁其餘的內容，是自己建立和管理資料庫的做法。

## 你會得到什麼

每個資料庫都是一個獨立的 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 的加購項目（[見下方](https://agentlab.cresclab.com/docs/zh-tw/deploy/databases.md#pitr)）。 |

同一個執行個體裡可以放好幾個資料庫，例如每個專案一個。每個資料庫屬於一個[環境](https://agentlab.cresclab.com/docs/zh-tw/deploy/glossary.md)，專案只能連到同一個環境裡的資料庫。

## 各方案包含什麼

| 方案     | 資料庫數量 | 大小 | 時間點復原 |
| -------- | ---------- | ---- | ---------- |
| Free     | 1          | S    | 無         |
| Pro      | 2          | S、M | 無         |
| Team     | 10         | S–XL | 無         |
| Business | 依合約     | S–XL | 加購       |

- **Free：**資料庫不收費，計入免費額度。要先綁定信用卡（不會扣款），連續 7 天沒有使用會自動停止，到資料庫頁面再啟動就好。
- **付費方案：**資料庫一建立就開始計費。停止的資料庫只收儲存空間的費用。價格見[價格頁](https://agentlab.cresclab.com/deploy#pricing)。
- 資料庫會產生費用，所以只有組織的擁有者和管理員可以建立。

## 建立資料庫

**主控台**

1. 開啟 **資料庫**，按 **建立資料庫**。
2. 選擇 **資料庫類型** 和 **版本**，填 **名稱**（最多 63 個字元），選擇 **機器規格**、離會連線的服務最近的 **區域**，以及儲存空間。
3. 加密方式維持 **只允許 SSL 連線**，除非你有特別的理由（見[連線安全](https://agentlab.cresclab.com/docs/zh-tw/deploy/databases.md#security)）。
4. 在連線設定加入會連線的 IPv4 位址，或打開 **允許 Agent Lab 上的服務連線**。
5. 按 **建立資料庫**。

**AI 工具**

```prompt
建立一個 Agent Lab PostgreSQL 資料庫，名稱 orders，大小 S，放在台灣，讓我在 Agent Lab 上的專案可以連線。
```

助理會呼叫 `databases_create`，先給你看預覽，你同意後才建立，因為一建立就開始計費。見 [MCP 工具 › 資料庫](https://agentlab.cresclab.com/docs/zh-tw/deploy/mcp-tools.md#databases)。

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

## 連上專案

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

**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）。預覽會列出要寫入、以及會被取代的變數；你同意後，它建立帳號並重新啟動專案。

**主控台**

1. 在資料庫的 **使用者與資料庫** 分頁，替專案建立一個資料庫和一個使用者。專案會自己建立資料表的話，存取權選 **擁有者：完整控制這個資料庫**。密碼只顯示一次，請先複製。
2. 在資料庫的 **總覽** 分頁複製連線字串，填入使用者、密碼和資料庫名稱。
3. 把它加到專案，設成隱藏值，例如 `DATABASE_URL`，再重新啟動專案。見[專案設定](https://agentlab.cresclab.com/docs/zh-tw/deploy/app-settings.md#secrets)。

連上時會發生這些事：

- **專案的帳號擁有自己的資料庫。**它可以建立和修改資料表，所以 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 工具 › 資料庫資料工具](https://agentlab.cresclab.com/docs/zh-tw/deploy/mcp-tools.md#database-data)。

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

在資料庫 **設定** 分頁的 **已授權的網路** 加入你的 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 工具 › 把資料庫搬進來](https://agentlab.cresclab.com/docs/zh-tw/deploy/mcp-tools.md#import)。

## 停止、啟動和刪除

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

## 還原到某個時間點

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

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