有没有一种方法可以从PostgreSQL服务器中获取登录角色的加密密码呢?
为了更好地说明我的问题,我试图通过Ansible来管理postgres用户的密码。为此,我想要检查加密密码的当前值(例如'md5...')以查看它是否是最新的。如果不是,我将执行适当的ALTER ROLL命令进行更新。
我知道我可以使用pg_dumpall来查看密码,例如:
但这似乎不是一种非常可靠的方法。
为了更好地说明我的问题,我试图通过Ansible来管理postgres用户的密码。为此,我想要检查加密密码的当前值(例如'md5...')以查看它是否是最新的。如果不是,我将执行适当的ALTER ROLL命令进行更新。
我知道我可以使用pg_dumpall来查看密码,例如:
$ pg_dumpall --roles-only
<snip>
CREATE ROLE postgres;
ALTER ROLE postgres WITH ... PASSWORD 'md5...';
但这似乎不是一种非常可靠的方法。
pg_authid
中的密码在使用md5加密前,会与用户名连接起来,因此将其与裸密码的md5进行比较是无用的。(https://www.postgresql.org/docs/current/static/catalog-pg-authid.html) - gilad905SELECT rolpassword FROM pg_authid WHERE rolname='postgres';
或者对于所有用户,包括用户名:SELECT rolname, rolpassword FROM pg_authid;
- mivk