我需要将角色从一个postgresql数据库克隆到另一个。是否有可能以某种方式提取角色密码哈希并将其设置在另一个数据库中?我想避免任何明确的密码操作...
答案 0 :(得分:2)
如果PostgreSQL认为您使用MD5哈希设置密码,则会直接存储它。来自the docs
如果呈现的密码字符串已经是MD5加密格式,则无论是否指定了ENCRYPTED或UNENCRYPTED,它都按原样加密存储(因为系统无法解密指定的加密密码字符串)。这允许在转储/恢复期间重新加载加密密码。
答案 1 :(得分:0)
您可以从pg_shadow
中选择密码并按照文档使用密码,正如Eavn所说。或者您可以使用pg_dumpall -g
,这将基本上准备使用md5密码运行的语句,例如。在我的机器上:
CREATE ROLE r;
ALTER ROLE r WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'md5514f1b439f404f86f77090fa9edc96ce';