Skip to content

通过 PostgreSQL 协议连接 EMQX Tables

EMQX Tables 支持 PostgreSQL 网络连接协议,可以使用 psql 和兼容客户端驱动连接数据库并执行 SQL。连接使用 TLS 加密。

PostgreSQL 协议兼容不代表完整 PostgreSQL 服务兼容。SQL 方言、函数和扩展的支持范围以 Tables 为准。

连接参数

进入目标 Tables 部署,点击集成与客户端,然后点击 PostgreSQL。Console 会在连接指南中填入当前部署的域名、端口、数据库名称、用户名和密码。

参数
主机{HOST},替换为 Tables 公网域名
端口4003
数据库{DB_NAME},例如 public
用户名{USER},替换为连接信息中显示的用户名
密码{PASSWORD},替换为该部署连接信息中显示的密码
SSL 模式require

使用目标部署的连接地址、端口和连接凭据,将以下模板中的占位符替换为实际连接值。

PostgreSQL 命令行工具

安装 psql 后,将占位符替换为实际连接值,运行:

bash
psql "host={HOST} port=4003 dbname={DB_NAME} user={USER} sslmode=require" -W

按提示输入密码。连接成功后,执行以下 SQL 验证:

sql
SELECT 1;

如已完成快速开始,还可查询业务数据:

sql
SELECT * FROM machine_metrics ORDER BY ts DESC LIMIT 10;

连接字符串

在支持 PostgreSQL 连接字符串的客户端库中,可使用以下模板:

text
host={HOST} port=4003 dbname={DB_NAME} user={USER} password={PASSWORD} sslmode=require

根据所用驱动的规则处理密码中的特殊字符。应用配置中应通过环境变量或凭据管理机制提供密码,避免将真实密码提交到代码仓库。

URL 格式

JDBC

text
jdbc:postgresql://{HOST}:4003/{DB_NAME}?sslmode=require

将用户名和密码作为 JDBC 连接属性传入。

PostgreSQL URI

text
postgresql://{USER}:{PASSWORD}@{HOST}:4003/{DB_NAME}?sslmode=require

URI 中的用户名和密码需要按 URI 规则编码。应优先使用驱动提供的独立用户名、密码参数,避免把凭据记录到日志中。

TLS 和连接排查

sslmode=require 要求加密连接,但不提供完整的服务端主机名校验。 需要验证服务端身份时,应按所用驱动的要求配置受信任 CA 和主机名验证,并使用 Tables 域名连接。

连接失败时,检查域名、端口 4003、网络连通性、TLS、连接密码和数据库名称。连接成功但 SQL 失败时,应检查 SQL 是否属于 Tables 支持的语法。