PostgreSQL 版本升级到PG14后,pgbouncer 无法使用怎么回事?

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2350人左右 1 + 2 + 3 + 4 +5 +6)新人分配到6群。

2a3a5c101903d303ad8ace7340228367.png

pgbouncer 是一款在PG高并发时被使用的链接性的软件,通过它可以可以解决PG中对于高并发性能和系统消耗过高的问题,同时他软件虽小,可运行稳定,并且还有一些特殊的功能使用,这些问题我们可以放到后面去说,今天要说的是在之前在PG12可以运行良好的pgbouncer在安装到PG14后,将配置文件移植过来,通过他来登录到数据库,报无法登录密码失效的问题。

[postgres@pgce pgdata]$ psql -Utest -h 192.168.198.100 -p 6432 -d te
Password for user test: 
psql: error: connection to server at "192.168.198.100", port 6432 failed: FATAL:  password authentication failed
[postgres@pgce pgdata]$ 
[postgres@pgce pgdata]$

这个原因主要来源于pgbouner中对于用户验证的文件中的密码提供的方式,这点有点类似于 MYSQL 5.7 到MYSQL8 中的用户验证方式的密码变化。同样PG 也有类似的问题,这主要发生在PG14版本后,在PG14后默认的密码加密的方式变为了 scram-sha-256, 你编译安装后如果不发现这点,后续你的密码的加密方式都是 scram-sha-256

postgres=# select * from pg_shadow;
-[ RECORD 1 ]+--------------------------------------------------------------------------------------------------------------------------------------
usename      | postgres
usesysid     | 10
usecreatedb  | t
usesuper     | t
userepl      | t
usebypassrls | t
passwd       | 
valuntil     | 
useconfig    | 
-[ RECORD 2 ]+--------------------------------------------------------------------------------------------------------------------------------------
usename      | test
usesysid     | 16698
usecreatedb  | f
usesuper     | t
userepl      | f
usebypassrls | f
passwd       | SCRAM-SHA-256$4096:k7ZYyrKESo35BEpiTeGykg==$SQj7Vz76Q9W97THeHiR2zRSUFmWGuls03LXqtRW28mk=:fvuWHhZ8htnUHnNoamAHMSZ9wnkT6gmmqEq50rjOOWc=
valuntil     | 
useconfig    |

而之前的pgbouncer userlist.txt里面的用户的密码可还是md5的设置.

那么在pgbouncer 的任何配置都不变的情况下,直接原版照抄到POSTGRESQL 14版本的数据库中,会出现无法链接的问题。解决方案也很简单,我们需要将POSTGRESQL 14中的配置文件中的用户密码的加密设定,改为md5即可。

#authentication_timeout = 1min          # 1s-600s
password_encryption = md5 #scram-sha-256        # scram-sha-256 or md5
#db_user_namespace = off

同时还需要注意的是,及时修改完毕,那么之前已经建立的用户还需要重新建立,否则改动只对之后用户生效,之前的账号是不可以的。

postgres=# select * from pg_shadow ;
 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |                                                                passwd                             
                                    | valuntil | useconfig 
----------+----------+-------------+----------+---------+--------------+---------------------------------------------------------------------------------------------------
------------------------------------+----------+-----------
 postgres |       10 | t           | t        | t       | t            |                                                                                                   
                                    |          | 
 test     |    16698 | f           | t        | f       | f            | SCRAM-SHA-256$4096:k7ZYyrKESo35BEpiTeGykg==$SQj7Vz76Q9W97THeHiR2zRSUFmWGuls03LXqtRW28mk=:fvuWHhZ8h
tnUHnNoamAHMSZ9wnkT6gmmqEq50rjOOWc= |          | 
(2 rows)

postgres=# drop user test;
DROP ROLE
postgres=# create user test superuser password 'test';
CREATE ROLE
postgres=# select * from pg_shadow ;
 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |               passwd                | valuntil | useconfig 
----------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------
 postgres |       10 | t           | t        | t       | t            |                                     |          | 
 test     |    16699 | f           | t        | f       | f            | md505a671c66aefea124cc08b76ea6d30bb |          | 
(2 rows)

在重新建立用户后,我们再次尝试通过原来的方式通过pgbouncer 登录到数据库系统中就可以了。

[postgres@pgce pgdata]$ psql -Utest -h 192.168.198.100 -p 6432 -d test
Password for user test: 
psql (14.7)
Type "help" for help.

test=#

再次尝试,之前的报的 FATAL:  password authentication failed 的问题就解决了。

同时pgbouncer 也已经支持了 scram-sha-256 的密码验证方式,如果不想调整postgresql 的密码加密的方法,那么就需要更新的pgbouncer 的软件搭配来使用,那么在userlist 文件中存放的密码也就必须是 scram_sha_256 的

c7a8ab1d34fcdb190ffa8559937f29b8.png

置顶文章:

临时工访谈:NoSQL 大有前景,MongoDB DBA 被裁员后谋求新职位

临时工访谈:问金融软件开发总监  哪些业务不用传统数据库

PolarDB for PostgreSQL  有意思吗?有意思呀

PolarDB  Serverless POC测试中有没有坑与发现的疑问

PolarDB 数据库架构 测试 serverless 后的 三字真言  稳定,灵活,省钱(的用对地方)

往期热门文章:

临时工说:如果DBA大龄被裁员了怎么办?

临时工说:炮轰阿里云MongoDB司令部 低质高价技术差 你是要疯!!!!

MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验

临时工访谈:从国产数据库 到 普罗大众的产品 !与在美国创业软件公司老板对话

PostgreSQL 如何通过工具来分析PG 内存泄露

MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验

临时工访谈:我很普通,但我也有生存的权利,大龄程序员 求职贴

PolarDB  Serverless POC测试中有没有坑与发现的疑问

临时工访谈:PolarDB  Serverless  发现“大”问题了  之 灭妖记 续集

临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一

临时工说: 快速识别 “海洋贝壳类” 数据库方法速递

临时工说:国产 数据库 销售人员  图鉴

MongoDB 不是软柿子,想替换就替换

PostgreSQL  熊灿灿一句话够学半个月 之 KILL -9

MongoDB  挑战传统数据库聚合查询,干不死他们的

临时工说:国内数据库企业存活   “三板斧”

临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一  (阿里云组团PK笔者实录

临时工访谈:金牌 “女” 销售从ORACLE 转到另类国产数据库 到底  为什么?

临时工访谈:无名氏意外到访-- 也祝你好运(管理者PUA DBA现场直播)

临时工说:搞数据库 光凭的是技术,那DBA的死多少次?

PostgreSQL  分组查询可以不进行全表扫描吗?速度提高上千倍?

临时工说:分析当前经济形势下 DBA 被裁员的根因

PostgreSQL PG_DUMP 工作失败了怎么回事及如何处理

MySQL 八怪(高老师)现场解决问题实录

PostgreSQL 为什么也不建议 RR隔离级别,MySQL别笑

临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者

临时工说:OceanBase 到访,果然数据库的世界很卷,没边

临时工访谈:恶意裁员后,一个国产数据库企业程序员的心声

临时工说:上云后给 我一个 不裁 DBA的理由

PolarDB for PostgreSQL  有意思吗?有意思呀

PostgreSQL   玩PG我们是认真的,vacuum 稳定性平台我们有了

临时工说:裁员裁到 DBA 咋办  临时工教你 套路1 2 3

PolarDB  搞那么多复杂磁盘计费的东西,抽筋了吗?

临时工说:OceanBase 到访,果然数据库的世界很卷,没边

MONGODB  ---- Austindatabases  历年文章合集

MYSQL  --Austindatabases 历年文章合集

POSTGRESQL --Austindatabaes 历年文章整理

POLARDB  -- Ausitndatabases 历年的文章集合

PostgreSQL  查询语句开发写不好是必然,不是PG的锅

SQL SERVER 如何实现UNDO REDO  和PostgreSQL 有近亲关系吗

MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)

Austindatabases 公众号,主要围绕数据库技术(PostgreSQL, MySQL, Mongodb, Redis, SqlServer,PolarDB, Oceanbase 等)和职业发展,国外数据库大会音译,国外大型IT信息类网站文章翻译,等,希望能和您共同发展。

截止今天已经发布文章

822e1b0c26419fc630fdbf63f83e0114.png

66d7d73f4b8f33f8a56a736a8240ec76.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值