跳到主要内容

直接连接

概述

Prisma Postgres 是您应用程序的理想选择,无论您是通过 Prisma ORM 还是任何其他 ORM、数据库库/工具连接到它。如果您将其与 Prisma ORM 一起使用,Prisma Postgres 将提供内置的连接池和集成的缓存层(由 Prisma Accelerate 提供支持)。

如果您通过其他工具连接到它,可以使用遵循常规 PostgreSQL 格式的直接连接字符串进行连接。

如何通过直接 TCP 连接到 Prisma Postgres

要获取直接连接字符串,您需要

  1. 在您的账户中打开一个项目(或创建一个新项目)
  2. 导航到具有活动 Prisma Postgres 实例的环境
  3. 点击项目侧边导航中的API 密钥选项卡
  4. 点击创建 API 密钥按钮
  5. 在弹窗中,为 API 密钥提供一个名称,然后点击创建
  6. 复制以 postgres:// 开头的连接字符串,这就是您的直接连接字符串

连接字符串

格式

当您通过直接 TCP 连接到 Prisma Postgres 时,您的连接字符串如下所示

DATABASE_URL="postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require"

USERPASSWORD 值在您生成 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(免费)ProBusiness
连接限制最多 20最多 20最多 20

查询和事务超时

当直接连接处于早期访问阶段时,适用以下超时设置

Starter(免费)ProBusiness
查询超时最长 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 环境变量

export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"

API_KEY 占位符替换为您的 Prisma Postgres 实例的 API 密钥值。

启动 TCP 隧道

要启动代理服务器,请运行以下命令

npx @prisma/ppg-tunnel
显示CLI结果
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 或像 TablePlusDataGrip 这样的 GUI 工具。为此,您只需提供上面输出中的 hostport。TCP 隧道将通过您的 Prisma Postgres 连接 URL 中的 API 密钥处理身份验证,因此您可以省略 usernamepassword 的值。

自定义主机和端口

默认情况下,隧道在 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 数据库。
© . All rights reserved.