You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PostgreSQL中5433端口的用途及连接调试问题咨询

PostgreSQL中5433端口的用途及连接调试问题咨询

嗨,看起来你在Ubuntu上遇到了PostgreSQL多端口的困惑,我来帮你一步步拆解这个问题并给出调试方案~

首先,PostgreSQL默认用5432端口,但出现5433通常意味着系统上运行了另一个独立的PostgreSQL实例。在Ubuntu环境下,这种情况很常见:

  • 可能是你安装了不同版本的PostgreSQL(比如同时装了14和15版本),每个版本默认会创建一个独立集群,分配不同端口;
  • 也可能是手动创建了额外的PostgreSQL集群,用于测试、隔离不同业务数据等。

接下来是具体的调试步骤,帮你搞清楚5433端口的来头并解决连接问题:

1. 先确认5433对应的实例信息

Ubuntu上有个专门管理PostgreSQL集群的工具pg_lsclusters,执行它能直接列出所有运行的PostgreSQL集群,包括版本、集群名称、对应端口、状态:

pg_lsclusters

输出里会有类似这样的行,你就能看到5433对应的是哪个版本哪个集群:

Version Cluster Port Status Owner    Data directory               Log file
14      main    5432 online postgres /var/lib/postgresql/14/main  /var/log/postgresql/postgresql-14-main.log
15      test    5433 online postgres /var/lib/postgresql/15/test  /var/log/postgresql/postgresql-15-test.log

2. 检查该实例的连接配置

找到5433对应集群的配置文件(从上面的命令结果里能拿到数据目录和配置文件路径,通常在/etc/postgresql/{版本}/{集群名}/下):

  • 先看postgresql.conf,确认port确实是5433,同时检查listen_addresses是否包含127.0.0.1(本地连接的话这个是必须的);
  • 再看pg_hba.conf,这个文件控制连接权限,你需要确认有没有允许你的用户从本地连接的规则。比如是否存在类似下面的行:
    local   all             all                                     trust
    host    all             all             127.0.0.1/32            md5
    
    如果没有对应的规则,你的用户就无法连接这个实例。

3. 用psql直接测试连接,获取详细错误

比起pgAdmin,用psql命令行工具连接能得到更精准的错误信息,执行下面的命令(替换成你的用户名):

psql -p 5433 -U your_username

如果连接失败,终端会直接输出原因,比如“用户不存在”“密码错误”“连接被拒绝”等,这能帮你快速定位问题。

4. 查看实例日志找线索

每个PostgreSQL实例都有独立的日志文件,从pg_lsclusters的结果里能找到日志路径,比如/var/log/postgresql/postgresql-15-test.log。查看日志里的连接相关条目,能看到连接失败的具体细节,比如权限校验失败、配置错误等。

5. 确认进程的详细信息

你已经通过ss命令拿到了5433对应的进程PID是1864,执行下面的命令能看到这个进程的启动参数,确认它对应的配置文件和实例:

ps aux | grep 1864

输出里会包含该PostgreSQL实例的启动路径、配置文件路径等信息,进一步验证它的身份。

总结一下,5433基本就是另一个独立的PostgreSQL集群,按照上面的步骤一步步排查,很快就能搞清楚它的用途并解决连接问题啦~

备注:内容来源于stack exchange,提问作者stackbiz

火山引擎 最新活动