配置pgsql的密码策略主要用到的是passwordcheck.so,保证passwordcheck.so在/usr/pgsql-15/lib下即可配置,/usr/pgsql-15/lib为例,具体以实际路径为主
1、要配置密码复杂度策略需要安装readline库和zlib库
#安装readline库,zlib库
bash
yum install readline-devel zlib-devel
2、查找pgsql的实际相关路径,配置密码策略
#查询pg_config文件位置
bash
find / -name pg_config
将查询到的pg_config路径配置环境变量
bash
export PATH=$PATH:/usr/pgsql-15/bin
#使环境变量生效
bash
source ~/.bashrc
#测试pg_config是否生效,输入pg_config后有信息显示
使用pg_config查看pgsql的相关路径
bash
pg_config
找到LIBDIR路径并进入
bash
cd /usr/pgsql-15/lib
3、有passwordcheck.so则可以配置密码策略,有两种方式配置(一般yum安装/usr/pgsql-15/lib中都会有此模块)
一是进入到postgresql的控制台配置
#配置shared_preload_libraries
bash
postgres=# alter system set shared_preload_libraries='passwordcheck';
配置完成后保存退出,重启数据库并查看pg运行状态
bash
systemctl restart postgresql-15
systemctl status postgresql-15
#查看配置是否生效,进入postgresql控制台
bash
postgres=# show shared_preload_libraries;
shared_preload_libraries
--------------------------
passwordcheck
若输出passwordcheck则证明配置成功。
二是直接在postgresql.conf中配置密码策略
bash
vim /var/lib/pgsql-15/data/postgresql.conf
找到shared_preload_libraries并配置
bash
shared_preload_libraries = 'passwordcheck'
配置完成后保存退出,重启数据库并查看pg运行状态
bash
systemctl restart postgresql-15
systemctl status postgresql-15
#查看配置是否生效,进入postgresql控制台
bash
postgres=# show shared_preload_libraries;
shared_preload_libraries
--------------------------
passwordcheck
若输出passwordcheck则证明配置成功。
4、无passwordcheck.so可能是使用二进制编译安装,需要找到编译过的pgsql二进制包下的/contrib/passwordcheck/目录中寻找,
将其复制到/usr/pgsql/lib中,此路径/usr/pgsql/lib为例,以你服务器pg_config输出的实际路径为准
后续操作与上面两种有passwordcheck.so的配置方式一致