プロジェクトに PostgreSQL・MySQL データベースを追加する
専用の PostgreSQL または MySQL データベースを作成してプロジェクトに接続し、プロジェクト自身のアカウントがテーブルを所有するようにします。Claude Code や Codex から MCP でテーブルも作成できます。
いちばん早い方法:デプロイに作成させる#
コードが DATABASE_URL、POSTGRES_URL、MYSQL_URL、または DB_HOST と DB_PASSWORD などのデータベース接続変数を読み、プロジェクトにまだその値がない場合、AI ツールからのデプロイやコンソールでのアップロードで、ビルド開始前にサイズ S のデータベースが作成され、接続されます。通常は PostgreSQL で、コードが MYSQL_ で始まる名前を読む場合は MySQL です。AI ツールにデプロイを頼むだけで済みます。
このフォルダを 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 のオプションです(後述)。 |
1 つのインスタンスに複数のデータベースを置けます。たとえばプロジェクトごとに 1 つです。データベースはそれぞれ 1 つの環境に属し、プロジェクトは同じ環境のデータベースにだけ接続できます。
プランごとの内容#
| プラン | データベース数 | サイズ | ポイントインタイムリカバリ |
|---|---|---|---|
| Free | 1 | S | なし |
| Pro | 2 | S、M | なし |
| Team | 10 | S–XL | なし |
| Business | 契約による | S–XL | オプション |
- Free:データベースは課金されず、無料枠に含まれます。先にカードの登録が必要です(請求はされません)。7 日間使われないと自動で停止するので、データベースのページから起動してください。
- 有料プラン:作成した時点で課金が始まります。停止中のデータベースはストレージ分だけ課金されます。料金は料金ページをご覧ください。
- 課金が発生するため、作成できるのは組織のオーナーと管理者だけです。
データベースを作成する#
- データベース を開き、データベースを作成 を選びます。
- データベースの種類 と バージョン、名前(63 文字まで)、マシンサイズ、接続するサービスに近い リージョン、ストレージを選びます。
- 暗号化は、特に理由がなければ SSL 接続のみ許可する のままにします(接続のセキュリティ)。
- 接続元として IPv4 アドレスを追加するか、Agent Lab 上で動くサービスからの接続を許可する をオンにします。
- データベースを作成 を選びます。
Agent Lab に orders という名前の PostgreSQL データベースを、サイズ S、台湾で作成して。Agent Lab のプロジェクトから接続できるようにして。アシスタントは databases_create を呼び出してプレビューを見せ、同意した後に作成します。作成した時点で課金が始まるためです。MCP ツール › データベースをご覧ください。
作成には通常 10–15 分かかります。サイズ S の MySQL はさらにかかることがあります。
プロジェクトに接続する#
接続すると、プロジェクト専用のデータベースアカウントが作られ、Agent Lab が生成した強いパスワードとともに接続情報がプロジェクトのシークレットに書き込まれます。パスワードはあなたにも AI ツールにも表示されません。
orders-api プロジェクトを orders データベースに接続して。どの変数を使うかはコードを読んで確認して。アシスタントはコードが読む変数を確認し、databases_connect_app に各変数名と、それが接続情報のどの部分かを渡します。
{
"database": "orders",
"site": "<sites_list のプロジェクト id>",
"variables": { "DATABASE_URL": "url" }
}ほかに jdbcUrl、host、port、hostPort、database、user、password、sslmode、ca(サーバー CA)があります。プレビューに書き込む変数と置き換わる変数が表示され、同意するとアカウントを作成してプロジェクトを再起動します。
- データベースの ユーザーとデータベース タブで、プロジェクト用のデータベースとユーザーを作成します。プロジェクトが自分でテーブルを作る場合は オーナー:データベースを完全に管理 を選びます。パスワードは一度しか表示されないのでコピーしてください。
- データベースの 概要 タブで接続文字列をコピーし、ユーザー、パスワード、データベース名を埋めます。
- それを
DATABASE_URLなどのシークレットとしてプロジェクトに追加し、プロジェクトを再起動します。プロジェクトの設定をご覧ください。
接続で行われること:
- プロジェクトのアカウントが自分のデータベースを所有します。テーブルの作成や変更ができるので、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 クライアントもいりません。
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 ツール › データベースのデータツールをご覧ください。
自分のコンピューターや他のホストから接続する#
データベースの 設定 タブの 承認済みネットワーク に自分の IPv4 アドレスを追加し、ユーザーとデータベース のユーザーで、概要 タブのアドレスに接続します。server-ca.pem は 証明書 タブからダウンロードします。
psql "host=<address> port=5432 dbname=orders user=<user> sslmode=verify-ca sslrootcert=server-ca.pem"mysql --host=<address> --port=3306 --user=<user> --password \
--ssl-mode=VERIFY_CA --ssl-ca=server-ca.pem ordersverify-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 では証明書を取り消すと現在の接続がすべて切れ、有効な証明書を持つクライアントは自動で再接続します。
証明書を使う場合は、接続に追加します。
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 分ほど)接続が切れます。
- 復元を始められるのはオーナーと管理者だけです。