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 数据库。