直接連線
概述
Prisma Postgres 是您應用程式的理想選擇,無論您是透過 Prisma ORM 還是任何其他 ORM、資料庫庫/工具連線到它。如果您將其與 Prisma ORM 一起使用,Prisma Postgres 將提供內建的連線池和整合的快取層(由 Prisma Accelerate 提供支援)。
如果您透過其他工具連線到它,可以使用遵循常規 PostgreSQL 格式的直接連線字串進行連線。
如何透過直接 TCP 連線到 Prisma Postgres
要獲取直接連線字串,您需要
- 在您的賬戶中開啟一個專案(或建立一個新專案)
- 導航到具有活動 Prisma Postgres 例項的環境
- 點選專案側邊導航中的API 金鑰選項卡
- 點選建立 API 金鑰按鈕
- 在彈窗中,為 API 金鑰提供一個名稱,然後點選建立
- 複製以
postgres://開頭的連線字串,這就是您的直接連線字串
連線字串
格式
當您透過直接 TCP 連線到 Prisma Postgres 時,您的連線字串如下所示
DATABASE_URL="postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require"
USER 和 PASSWORD 值在您生成 Prisma Postgres 例項憑據時提供,在。以下是一個包含示例值的例子
DATABASE_URL="postgres://2f9881cc7eef46f094ac913df34c1fb441502fe66cbe28cc48998d4e6b20336b:sk_QZ3u8fMPFfBzOID4ol-mV@db.prisma.io:5432/?sslmode=require"
SSL 模式
透過直接 TCP 連線到 Prisma Postgres 時需要 SSL 模式,因此您需要在 TCP 連線字串中追加 sslmode=require。
計費
當使用直接 TCP 連線到 Prisma Postgres 例項時,每個 SQL 查詢都計為一次可計費操作。在我們的定價頁面瞭解更多資訊。
臨時限制
關閉空閒連線
Prisma Postgres 會在長時間不活動後關閉空閒連線。如果您的應用程式中發生這種情況,您可以重新開啟一個新的連線。(大多數資料庫客戶端會自動重新連線。)
連線限制
當直接連線處於早期訪問階段時,適用以下連線限制
| Starter(免費) | Pro | Business | |
|---|---|---|---|
| 連線限制 | 最多 20 | 最多 20 | 最多 20 |
查詢和事務超時
當直接連線處於早期訪問階段時,適用以下超時設定
| Starter(免費) | Pro | Business | |
|---|---|---|---|
| 查詢超時 | 最長 10 秒 | 最長 10 秒 | 最長 10 秒 |
| 互動式事務超時 | 最長 15 秒 | 最長 15 秒 | 最長 15 秒 |
有限的使用者許可權
使用者許可權僅限於讀、寫和模式更改。無法建立單獨的資料庫、管理使用者和角色或執行其他管理操作。
TCP 隧道
Prisma Postgres 可以透過 TCP 隧道安全地訪問,使用 @prisma/ppg-tunnel 包,這是一個專為本地資料庫工作流設計的認證代理。此包透過本地 TCP 伺服器與 Prisma Postgres 建立安全連線,在自動處理流量路由和認證的同時,實現安全訪問。
這是 Prisma Postgres 的一項早期訪問功能。不建議將其用於生產環境,也不適用於應用程式級別的訪問。
在早期訪問階段,TCP 隧道的使用將免費。
先決條件
- 您的機器上已安裝 Node.js
- 一個 Prisma Postgres 資料庫連線字串,設定為名為
DATABASE_URL的環境變數
匯出環境變數
隧道要求您將 DATABASE_URL 環境變數設定為您的 Prisma Postgres 例項的連線 URL。如果您從專案中執行隧道命令,並且 .env 檔案中已設定 DATABASE_URL,則可以跳過此步驟,因為隧道會自動獲取它。
要在終端會話中臨時匯出 DATABASE_URL 環境變數
- macOS
- Linux
- Windows
export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
set DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
將 API_KEY 佔位符替換為您的 Prisma Postgres 例項的 API 金鑰值。
啟動 TCP 隧道
要啟動代理伺服器,請執行以下命令
npx @prisma/ppg-tunnel
Prisma Postgres auth proxy listening on 127.0.0.1:52604 🚀
Your connection is authenticated using your Prisma Postgres API key.
...
==============================
hostname: 127.0.0.1
port: 52604
username: <anything>
password: <none>
==============================
這將在一個隨機分配的 TCP 埠上啟動隧道。代理會自動處理身份驗證,因此接受任何資料庫憑據。隧道還會加密流量,這意味著客戶端應設定為不需要 SSL。
您現在可以使用您喜歡的 PostgreSQL 客戶端連線到 Prisma Postgres 編輯器,例如 psql 或像 TablePlus 或 DataGrip 這樣的 GUI 工具。為此,您只需提供上面輸出中的 host 和 port。TCP 隧道將透過您的 Prisma Postgres 連線 URL 中的 API 金鑰處理身份驗證,因此您可以省略 username 和 password 的值。
自定義主機和埠
預設情況下,隧道在 127.0.0.1 上監聽並分配一個隨機埠。由於它提供對 Prisma Postgres 資料庫的訪問,因此應僅在受信任的網路中公開。您可以使用 --host 和 --port 標誌指定自定義主機和埠
npx @prisma/ppg-tunnel --host 127.0.0.1 --port 5432
下一步
本地隧道使您能夠從第三方資料庫編輯器(如 Postico、DataGrip、TablePlus 和 pgAdmin)訪問 Prisma Postgres。在此章節中瞭解更多資訊。
安全注意事項
使用 TCP 隧道時,請記住以下幾點
- 隧道不支援模式管理(即,Prisma Migrate 之外的 DDL 查詢)。
- 隧道不應暴露在不受信任的網路中。
- 始終安全地儲存 API 金鑰,並避免硬編碼它們。
- 確保只有必要的使用者才能直接訪問 Prisma Postgres 資料庫。