Você pode fornecer a senha já com hash com
md5 , como dito no doc (CREATE ROLE):
ENCRYPTED UNENCRYPTED Estas palavras-chave controlam se a senha é armazenada criptografada nos catálogos do sistema. (Se nenhum for especificado, o comportamento padrão é determinado pelo parâmetro de configuração senha_encriptação.) Se a string de senha apresentada já estiver no formato criptografado em MD5, ela será armazenada criptografada como está , independentemente de ENCRYPTED ou UNENCRYPTED ser especificado (já que o sistema não pode descriptografar a string de senha criptografada especificada). Isso permite o recarregamento de senhas criptografadas durante o dump/restauração.
A informação que está faltando aqui é que a string criptografada em MD5 deve ser a senha concatenada com o nome de usuário, mais
md5 no inicio. Por exemplo, para criar
u0 com a senha foobar , sabendo que md5('foobaru0') é ac4bbe016b808c3c0b816981f240dcae :CREATE USER u0 PASSWORD 'md5ac4bbe016b808c3c0b816981f240dcae';
e então u0 poderá fazer login digitando
foobar como a senha. Não acho que exista atualmente uma maneira de usar
SHA-256 em vez de md5 para senhas do PostgreSQL.