如何修改PostgreSQL数据库密码规则

1 业务场景
某些客户安全等保要求高,要求使用客户自定义的PG数据库密码规则(如同时包含字母大小写、数字、特殊字符,且长度大于8)。不只是修改当前数据库用户使之符合要求,而且要求创建的用户密码默认符合客户的密码规则;
PG原生的密码检查(passwordcheck)没有自定义规则,只能判断字符长度是否小于8且是否含有字母。
2 解决方案
修改PG passwordcheck源码文件,重新编译此动态库,然后替换当前到PG对应目录下。
3 关键操作
下载获取PG12.8源码包(https://www.postgresql.org/ftp/source/v12.8/postgresql-12.8.tar.gz)
修改源码包文件postgresql-12.8/contrib/passwordcheck/passwordcheck.c文件,
如下图这里是定义密码长度规则的位置,可进行修改。

检查是否有字母、特殊字符、数字
在/* check if the password contains both letters and non-letters */ 下方增加两行变量,如下图所示

替换for里面原来的方法:
将原始文件中的
if (isalpha((unsigned char) password[i]))
pwd_has_letter = true;
elsepwd_has_nonletter = true;
替换为下图内容,判断是否有字母、大小写、特殊字符、是否有数字

修改下方信息内容,增加提示信息
原始内容为
if (!pwd_has_letter || !pwd_has_nonletter)
ereport(ERROR,
(e
如何修改PostgreSQL数据库密码规则
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



