直接连接
概述
Prisma Postgres 是您应用程序的理想选择,无论您是通过 Prisma ORM 还是任何其他 ORM、数据库库/工具连接。如果您与 Prisma ORM 一起使用,Prisma Postgres 具有内置连接池和集成缓存层(由 Prisma Accelerate 提供支持)。
如果您通过其他工具连接,您可以使用遵循传统 PostgreSQL 格式的直接连接字符串进行连接。
如何通过直接 TCP 连接到 Prisma Postgres
为了获取直接连接字符串,您需要
- 在您的账户中打开一个项目(或创建一个新项目)
- 导航到您的活跃 Prisma 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 模式,因此您需要将 sslmode=require 附加到您的 TCP 连接字符串。
计费
当使用直接 TCP 连接到 Prisma Postgres 实例时,每个请求都算作一个可计费操作。请访问我们的定价页面了解更多信息。
暂时限制
关闭空闲连接
Prisma Postgres 会在长时间空闲后关闭空闲连接。如果这在您的应用程序中发生,您可以重新打开一个新连接。(大多数数据库客户端会自动重新连接。)
连接限制
| 免费版 | 入门版 | 专业版 | 商业版 | |
|---|---|---|---|---|
| 连接限制 | 最多 10 个 | 最多 10 个 | 最多 50 个 | 最多 100 个 |
查询和事务超时
| 免费版 | 入门版 | 专业版 | 商业版 | |
|---|---|---|---|---|
| 查询超时 | 最长 10 秒 | 最长 10 秒 | 最长 10 秒 | 最长 10 秒 |
| 交互式事务超时 | 最长 15 秒 | 最长 15 秒 | 最长 15 秒 | 最长 15 秒 |
有限的用户权限
用户权限仅限于读、写和模式更改。无法创建单独的数据库、管理用户和角色或执行其他管理操作。
TCP 隧道(已弃用)
TCP 隧道功能已弃用,取而代之的是直接连接。请将直接连接用于所有新集成并迁移现有实现。
Prisma Postgres 可以通过使用 @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 数据库。