PostgreSQL分享|简易部署pgbouncer

本文详细介绍了如何在Linux环境下安装和配置PGBouncer,包括库的安装、源码编译、用户创建、配置文件编辑、错误处理以及安全设置,以实现对PostgreSQL的高效连接管理。
摘要由CSDN通过智能技术生成

一、环境准备

yum -y install libevent-devel

tar zxvf pgbouncer-1.18.0.tar.gz

启动数据库:pg_ctl -D /pgdata/data/ start

二、配置编译

cd pgbouncer-1.18.0

./configure

make && make install

三、创建用户

postgres=# create user test superuser  password 'test';
CREATE ROLE
postgres=# select usename, passwd from pg_shadow;
 usename  |                                                                passwd                                                                 
----------+---------------------------------------------------------------------------------------------------------------------------------------
 postgres | 
 test     | SCRAM-SHA-256$4096:3BqT1ICX/RtwAdQWsxa+ZQ==$KCpD3U2B2L9m+Al25oywhukvEzxZFe+2cxplP/c5UNg=:JVnXPWZbSXpQ70hpATLpddZJUhIagJ8Rn3FO+ybIYMI=

四、配置文件

编辑/etc/pgbouncer.ini 修改如下内容

[databases]

test = host=192.168.xx.xx port=5432 user=test password=test dbname=postgres client_encoding=UNICODE connect_query='select 1'

auth_type = md5
auth_file = /etc/userlist.txt

logfile = /pgdata/pgbouncer.log
pidfile = /pgdata/pgbouncer.pid

listen_addr = *
listen_port = 6432

pool_mode=session

编辑/etc/userlist.txt

"test","md505a671c66aefea124cc08b76ea6d30bb"

此时可能有同学要问了,auth_type设置的是md5,但是密码类型是SCRAM-SHA-256,我可不可以自作聪明用select md5('password');来获取md5的密码,答案是no!!如果非要使用md5类型的密码,需要调整password_encryption = md5参数,博主使用的pg版本为14.7,该参数默认为scram-sha-256。

参数调整完毕重建用户

postgres=# select usename, passwd from pg_shadow;
 usename  |               passwd                
----------+-------------------------------------
 postgres | 
 test     | md505a671c66aefea124cc08b76ea6d30bb

五、启动pgbouncer

[postgres data]$ pgbouncer -d /etc/pgbouncer.ini 
[postgres data]$ ps -ef|grep pgbo
postgres  21658      1  0 03:27 ?        00:00:00 pgbouncer -d /etc/pgbouncer.ini

六、登录测试

[postgres data]$ psql -Utest -p6432 -h192.168.x.x -d test
Password for user test: 
psql (14.7)
Type "help" for help.
test=#

[postgres data]$ psql  -p6432 -Upgbouncer

pgbouncer=# show clients;
-[ RECORD 1 ]----+------------------------
type             | C
user             | pgbouncer
database         | pgbouncer
state            | active
addr             | unix
port             | 6432
local_addr       | unix
local_port       | 6432
connect_time     | 2024-05-01 03:48:14 EDT
request_time     | 2024-05-01 03:49:47 EDT
wait             | 77
wait_us          | 178742
close_needed     | 0
ptr              | 0x1374890
link             | 
remote_pid       | 25308
tls              | 
application_name | psql
-[ RECORD 2 ]----+------------------------
type             | C
user             | test
database         | test
state            | active
addr             | 192.168.146.132
port             | 32986
local_addr       | 192.168.146.132
local_port       | 6432
connect_time     | 2024-05-01 03:49:14 EDT
request_time     | 2024-05-01 03:49:14 EDT
wait             | 0
wait_us          | 0
close_needed     | 0
ptr              | 0x1374af8
link             | 
remote_pid       | 0
tls              | 
application_name | psql

七、报错处理

[postgres data]$ psql -Utest -p6432 -d test
Password for user test: 
psql: error: connection to server on socket "/tmp/.s.PGSQL.6432" failed: FATAL:  no pg_hba.conf entry for host "192.168.xx", user "test", database "postgres", no encryption

vi pg_hba.conf添加如下内容

# IPv4 local connections:
host    all             all             0.0.0.0/0               md5

并重新载入配置文件 pg_ctl -D /pgdata/data/ reload

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值