暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PG+PGBOUNCER同一端口,竟然能同时运行

原创 necessary 2024-10-11
107

简介

今天遇到了一个非常低级的错误,psql无法访问已知的数据库
8e253a86c8fc9188ef7d4a3c665b34f.png
当我使用psql -h 的时候,会提示报错

[postgres@vm107 ~]$ psql -h 10.0.0.107 
Password for user postgres: 
psql: error: connection to server at "10.0.0.107", port 5432 failed: FATAL:  no such database: postgres

首先postgres数据库是有的
image.png
其次白名单也没有问题
image.png
数据库监听也没有问题
image.png
在查看服务器对外服务地址的时候,就发现了问题
image.png
tcp协议的对外服务中没有postgres进程。这样就好理解了,
psql 没有加h的时候是不走TCP协议的。加了h 是需要走TCP 协议的,但是却没有对应的,
image.png
虽然在对外服务中你有看到tcp6 协议,那是PG默认开启时就是对所有IPv6 可以访问。但是由于我在白名单中并没有开放IPv6的访问名单,所以即便访问进来,也会被pg_hba.conf拒绝
image.png
这里还有一条pgbouncer的信息

tcp        0      0 10.0.0.107:5432         0.0.0.0:*               LISTEN      38255/pgbouncer   

Local Address 端口信息竟然和我PG的一样,对口相同,PG竟然还能起得来。
image.png
psql -h 后面使用的时IPv4 访问PG是走的tcp协议,如果使用的是IPv6,访问PG是走的tcp6协议。

结论

原来pgbouncer只会对外开启TCP服务协议,
postgresql只要有TCP或者TCP6其中一个协议能对外服务,就不影响启动。所以这个和之前同一服务器上同端口的两个PG实例启动会失败不一样。

通过IPv6 访问postgresql数据库。是可以正常访问postgresql数据库的。
image.png

最后修改时间:2024-10-11 20:43:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论