通过 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=requireURI 中的用户名和密码需要按 URI 规则编码。应优先使用驱动提供的独立用户名、密码参数,避免把凭据记录到日志中。
TLS 和连接排查
sslmode=require 要求加密连接,但不提供完整的服务端主机名校验。 需要验证服务端身份时,应按所用驱动的要求配置受信任 CA 和主机名验证,并使用 Tables 域名连接。
连接失败时,检查域名、端口 4003、网络连通性、TLS、连接密码和数据库名称。连接成功但 SQL 失败时,应检查 SQL 是否属于 Tables 支持的语法。