我们知道在数据安全和等保要求中,用户的密码复杂度需要满足一定的条件,那么在 PostgreSQL 数据库中如何保证创建的用户的密码满足这些要求呢。
[root@localhost ~]# su - postgres
[postgres@localhost ~]$ cd /usr/local/pgsql-12.8/data/
[postgres@localhost data]$ vi postgresql.conf
shared_preload_libraries = 'passwordcheck' # (change requires restart)
[postgres@localhost data]$ cat postgresql.conf | grep 'shared_preload_libraries'
shared_preload_libraries = 'passwordcheck' # (change requires restart)
说明:从上面的关于这个参数的说明中我们可以看到修改这个参数是需要重启服务才能生效。
[postgres@localhost data]$ psql
psql (12.8)
Type "help" for help.
postgres=# show shared_preload_libraries;
shared_preload_libraries
--------------------------
passwordcheck
(1 row)
postgres=#
下面我们创建用户验证下密码验证
postgres=# create user cloud_read with password '123';
ERROR: password is too short
postgres=#
postgres=# create user cloud_read with password '12345678';
ERROR: password must contain both letters and nonletters
postgres=#
postgres=# create user cloud_read with password 'Cnhis@0728';
CREATE ROLE
postgres=#
说明:从上面的三个案例中,我们验证了当密码长度不符合 8 位的时候提示密码太短,当密码组成长度符合但是组成部分不符合密码规范的时候也报错。只有密码的组成符合密码验证机制的时候创建用户是成功的。