本地电脑连接云服务器中dify内部pgsql数据库
dify连接内部pgsql数据库
前言:公司领导需要统计问答机器人的命中率和总数,目前采取的是调用dify的接口进行统计,需要遍历每条会话的详情,比较耗时,因此想通过直接查数据提高效率
一、Dify 的数据库在哪里?
如果你是通过 Docker Compose 部署的 Dify,不需要单独安装 PostgreSQL,因为 Dify 已经自带了一个 PostgreSQL 容器。
用 docker container ps 可以看到类似这样的容器:

这就是 Dify 内置的数据库容器。
默认连接信息如下(以 .env 文件实际配置为准):
| 字段 | 默认值 |
|---|---|
| 主机 | db_postgres |
| 端口 | 5432 |
| 数据库 | dify |
| 用户名 | postgres |
| 密码 | difyai123456 |
二、为什么本地 Navicat 连不上?
很多人第一次尝试用 Navicat 连接公网 IP,会看到这样的报错:
could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "115.191.53.169" and accepting
TCP/IP connections on port 5432?
这个错误的本质是:TCP 连接在到达 PostgreSQL 之前就超时了,和密码对不对没有关系。
原因在于,默认的 docker-compose.yaml 中,db_postgres 服务没有声明 ports,也就是说 PostgreSQL 容器只在 Docker 内部网络中监听,宿主机和公网都访问不到。
db_postgres:
image: postgres:15-alpine
profiles:
- postgresql
# ...
volumes:
- ./volumes/db/data:/var/lib/postgresql/data
# ⚠️ 没有 ports 字段
这其实是一件好事——Dify 默认没有把数据库暴露到公网,是出于安全考虑。
三、为什么不建议直接开放公网?
有的人可能会想:那我加上 ports: "公网地址:5432:5432",不就能连上了吗?
强烈不建议这么做。
一旦 PostgreSQL 暴露到公网:
- 会被各种扫描器在几分钟内发现
- 会遇到密码暴力破解
- 数据泄露、被勒索的风险极高
- 很多云厂商默认就封禁 5432 端口
正确的做法是:不开放公网端口,通过 SSH 隧道连接。
四、推荐方案:SSH 隧道 + Navicat 内置 SSH 功能
原理:先通过ssh登录到服务器上,然后从服务器上连接pgsql
第一步:服务器端只绑定本机回环地址
修改 docker-compose.yaml,给 db_postgres 添加 ports,但只绑定到 127.0.0.1:
db_postgres:
image: postgres:15-alpine
profiles:
- postgresql
# ...
volumes:
- ./volumes/db/data:/var/lib/postgresql/data
ports: # 新增
- "127.0.0.1:5432:5432" # 新增只允许服务器本机访问
重启dify
docker compose down
docker compose up -d
第二步:用 Navicat 内置 SSH 隧道连接
Navicat 本身就支持 SSH 隧道,不需要在命令行手动敲 ssh -L,也不用担心关掉终端断线的问题。
在 Navicat 新建 PostgreSQL 连接时:
SSH 选项卡:
| 字段 | 值 |
|---|---|
| 使用 SSH 隧道 | ✅ 勾选 |
| 主机 | xxx(你的服务器公网 IP) |
| 端口 | 22 |
| 用户名 | 服务器系统登录用户(如 root) |
| 验证方式 | 密码 |
| 密码 | 服务器登录密码 |

常规选项卡:
| 字段 | 值 |
|---|---|
| 主机 | 127.0.0.1(相对于服务器的本机) |
| 端口 | 5432 |
| 数据库 | dify |
| 用户名 | postgres |
| 密码 | .env 里的 DB_PASSWORD |
这样 Navicat 会自动建立并维护 SSH 隧道,关闭 Navicat 时隧道自动断开,下次打开自动重连,非常方便。

连接成功后如图所示

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐




所有评论(0)