跳到主要内容

TCP 隧道

Prisma Postgres 可以通过 TCP 隧道安全访问,该隧道使用 @prisma/ppg-tunnel 包,这是一个专为本地数据库工作流程设计的身份验证代理。此包通过本地 TCP 服务器建立与 Prisma Postgres 的安全连接,从而实现安全访问,同时自动处理流量路由和身份验证。

注意

这是 Prisma Postgres 的 Early Access 功能。不建议用于生产环境,也不适用于应用程序级别的访问。

在 Early Access 期间,TCP 隧道的使用将免费。

先决条件

  • 您的机器上已安装 Node.js
  • 一个 Prisma Postgres 数据库连接字符串,设置为名为 DATABASE_URL 的环境变量

导出环境变量

隧道期望您已将以下 DATABASE_URL 环境变量设置为您的 Prisma Postgres 实例的连接 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 或 GUI,如 TablePlusDataGrip。为此,您只需要提供上面输出中的 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 数据库。