获取PostgreSQL登录角色的加密密码

获取PostgreSQL登录角色的加密密码,postgresql,ansible,Postgresql,Ansible,有没有办法从PostgreSQL服务器获取登录卷的加密密码 为了深入了解我的问题,我正在尝试通过Ansible管理postgres用户的密码。为此,我想检查加密密码的当前值(例如,'md5…“)以查看它是否为当前值。如果不是,我将执行相应的alterroll命令来更新它 我知道我可以使用pg_dumpall查看密码,例如: $ pg_dumpall --roles-only <snip> CREATE ROLE postgres; ALTER ROLE postgres WITH .

有没有办法从PostgreSQL服务器获取登录卷的加密密码

为了深入了解我的问题,我正在尝试通过Ansible管理
postgres
用户的密码。为此,我想检查加密密码的当前值(例如,
'md5…“
)以查看它是否为当前值。如果不是,我将执行相应的
alterroll
命令来更新它

我知道我可以使用
pg_dumpall
查看密码,例如:

$ pg_dumpall --roles-only
<snip>
CREATE ROLE postgres;
ALTER ROLE postgres WITH ... PASSWORD 'md5...';
$pg_dumpall--仅限角色
创建角色博士后;
改变角色的博士后与。。。密码“md5…”;

但这似乎不是一种非常可靠的方法。

尝试读取密码字段

SELECT rolpassword FROM pg_authid

目录pg_authid包含有关数据库的信息 授权标识符(角色)。角色包含以下概念: “用户”和“组”。用户本质上只是一个具有 rolcanlogin标志集。任何角色(有或没有rolcanlogin)都可以 其他成员角色;见pg_认证成员

由于此目录包含密码,因此不能公开 可读的。pg_角色是pg_authid上的一个公开可读视图,该视图 清空密码字段

SELECT rolpassword FROM pg_authid
第19章包含有关用户和权限的详细信息 管理层

因为用户标识是集群范围的,所以pg_authid在整个集群中共享 群集的所有数据库:每个群集只有一个pg_authid副本 群集,而不是每个数据库一个


当使用md5时,
pg_authid
中的密码与encrypthion之前的用户名连接在一起,因此将其与裸密码的md5进行比较是没有用的。()