Gostaria de permitir que um (super) usuário do PostgreSQL seja autenticado com os métodos de autenticação "peer" ou "md5", de preferência usando soquetes de domínio Unix local nos dois casos. O problema é que a ordem das entradas no pg_hba.conf é importante e a primeira correspondência será aplicada.
O que eu tenho:
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer
local all all md5
O que eu gostaria (sintaxe inválida):
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer-or-md5
local all all md5
Aqui estão mais alguns detalhes sobre o ambiente em que gostaríamos de usá-lo:
Nesse servidor específico, todos os bancos de dados são relativamente pequenos (<10 MB de dados cada) e puramente somente leitura. Eles são descartados e recriados todas as noites pelo superusuário harold. harold também é uma conta do sistema, portanto, "peer" funciona bem para cronjobs sem senha, etc. Depois, há uma interface da web acessando os bancos de dados: isso usa autenticação md5 (o usuário do sistema é o servidor da web, pg nome de usuário, senha e nome db são fornecidos por os visitantes). Agora, gostaria de deixar o usuário harold fazer login também na interface da web. Isso falha devido à configuração "par" para harold.
A solução atual é permitir que a interface da web se conecte através de TCP, usando
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
além das entradas locais no primeiro exemplo. Isso funciona, mas eu prefiro usar soquetes locais aqui também - para desempenho e por causa de um pressentimento de que parece a coisa certa a se fazer.
Isso é possível? Existem soluções alternativas melhores para nós?