---
title: プロジェクトに PostgreSQL・MySQL データベースを追加する
description: 専用の PostgreSQL または MySQL データベースを作成してプロジェクトに接続し、プロジェクト自身のアカウントがテーブルを所有するようにします。Claude Code や Codex から MCP でテーブルも作成できます。
url: https://agentlab.cresclab.com/docs/ja/deploy/databases
language: ja
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/ja/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/ja/deploy/databases.md#pitr)）。 |

1 つのインスタンスに複数のデータベースを置けます。たとえばプロジェクトごとに 1 つです。データベースはそれぞれ 1 つの[環境](https://agentlab.cresclab.com/docs/ja/deploy/glossary.md)に属し、プロジェクトは同じ環境のデータベースにだけ接続できます。

## プランごとの内容

| プラン   | データベース数 | サイズ | ポイントインタイムリカバリ |
| -------- | -------------- | ------ | -------------------------- |
| Free     | 1              | S      | なし                       |
| Pro      | 2              | S、M   | なし                       |
| Team     | 10             | S–XL   | なし                       |
| Business | 契約による     | S–XL   | オプション                 |

- **Free：**データベースは課金されず、無料枠に含まれます。先にカードの登録が必要です（請求はされません）。7 日間使われないと自動で停止するので、データベースのページから起動してください。
- **有料プラン：**作成した時点で課金が始まります。停止中のデータベースはストレージ分だけ課金されます。料金は[料金ページ](https://agentlab.cresclab.com/en/deploy#pricing)をご覧ください。
- 課金が発生するため、作成できるのは組織のオーナーと管理者だけです。

## データベースを作成する

**コンソール**

1. **データベース** を開き、**データベースを作成** を選びます。
2. **データベースの種類** と **バージョン**、**名前**（63 文字まで）、**マシンサイズ**、接続するサービスに近い **リージョン**、ストレージを選びます。
3. 暗号化は、特に理由がなければ **SSL 接続のみ許可する** のままにします（[接続のセキュリティ](https://agentlab.cresclab.com/docs/ja/deploy/databases.md#security)）。
4. 接続元として IPv4 アドレスを追加するか、**Agent Lab 上で動くサービスからの接続を許可する** をオンにします。
5. **データベースを作成** を選びます。

**AI ツール**

```prompt
Agent Lab に orders という名前の PostgreSQL データベースを、サイズ S、台湾で作成して。Agent Lab のプロジェクトから接続できるようにして。
```

アシスタントは `databases_create` を呼び出してプレビューを見せ、同意した後に作成します。作成した時点で課金が始まるためです。[MCP ツール › データベース](https://agentlab.cresclab.com/docs/ja/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/ja/deploy/app-settings.md#secrets)をご覧ください。

接続で行われること：

- **プロジェクトのアカウントが自分のデータベースを所有します。**テーブルの作成や変更ができるので、ORM が起動時に実行するマイグレーション（Prisma、Drizzle、Django、Rails、Laravel、TypeORM など）も動きます。同じインスタンスの他のデータベースには届かず、アカウントやデータベースも作れません。そこまで必要なければ `write`（データの読み書き、スキーマ変更なし）か `read` を頼んでください。
- **プロジェクトにまだデータベースがなければ、インスタンス内に作成されます。**名前はプロジェクトのアドレスラベルで、ハイフンはアンダースコアになります。名前を指定する場合は、小文字の英字で始め、小文字の英字・数字・アンダースコアだけを使い、PostgreSQL は 50 文字、MySQL は 64 文字までです。
- **Agent Lab 上で動くサービスからの接続を許可する** がオフなら、オンになります。
- **暗号化：**PostgreSQL の `url` には `sslmode=require` が付きます。MySQL の `url` には TLS の設定が入りません。ドライバーごとに書き方が違うため、ドライバー側で TLS をオンにしてください。
- クライアント証明書を必須にしたデータベースには、まだこの方法で接続できません。手動で接続するか、暗号化を **SSL 接続のみ許可する** に変えてください。

接続を解除するには `databases_disconnect_app` を使います。アカウントと書き込んだ変数が削除され、データは残ります。`databases_rotate_app_password` は新しいパスワードに替えてプロジェクトを再起動します。

## AI ツールからテーブルを作成し、データを調べる

Agent Lab に接続した Claude Code、Codex などの MCP クライアントからなら、データベースのパスワードも SQL クライアントもいりません。

```prompt
orders データベースに、id、body、created_at（タイムスタンプ）を持つ notes テーブルを作って、テーブルの一覧を見せて。
```

- `list_tables` はテーブルの一覧、`apply_migration` は名前付きのマイグレーション（PostgreSQL では 1 つのトランザクション、MySQL では 1 文ずつ）、`execute_sql` は 1 つのクエリを実行します。実行前にアシスタントが SQL を見せます。
- マイグレーションはすべて名前と SQL がデータベース内の `agentlab_data_control.migrations` テーブルに記録されます。
- オーナー、管理者、データベースの作成者とデータベース管理者は最初から書き込めます。他のメンバーには、データベースの **データ権限** か `databases_grant` で **Reader（読み取り）** または **Writer（読み書き）** を付与します。

引数、上限、例は [MCP ツール › データベースのデータツール](https://agentlab.cresclab.com/docs/ja/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 の例があります。

## 接続のセキュリティ

| 設定                                                      | 内容                                                                                                 |
| --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **承認済みネットワーク**                                  | 接続できる公開 IPv4 アドレスまたは CIDR 範囲を 20 個まで。それ以外からは接続できません。             |
| **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/ja/deploy/mcp-tools.md#import)をご覧ください。

## 停止・起動・削除

- **停止** してもデータとアドレスは残り、接続はすべて切れます。有料プランではストレージの課金が続きます。**起動** すると数分で同じアドレスに戻ります。
- **データベースを削除** では名前の入力が必要です。**削除前に最終バックアップを作成する** を選ぶと最後のバックアップが残ります。停止中のデータベースは、そのために先に起動されます。
- AI ツールからは `databases_stop` と `databases_start` を使います。

## 特定の時点に復元する

Business プランでは、データベースの **設定** で **ポイントインタイムリカバリ（PITR）** をオンにできます。その後は **特定の時点に復元** で、オンにした後の直近 7 日間の任意の時点を選べます。

- 復元では、その時点のデータを持つ**新しい**データベースが作られます。元のデータベースは変わりません。新しいデータベースはプランのデータベース数に数えられ、別に課金され、ポイントインタイムリカバリはオフの状態で始まります。
- MySQL では、ポイントインタイムリカバリのオン・オフでデータベースが再起動し、数分間（サイズ S では最大 20 分ほど）接続が切れます。
- 復元を始められるのはオーナーと管理者だけです。
