Je voudrais permettre à un (super) utilisateur PostgreSQL d'être authentifié avec les méthodes d'authentification "peer" ou "md5", en utilisant de préférence des sockets de domaine Unix local dans les deux cas. Le problème est que l'ordre des entrées dans pg_hba.conf est important et la première correspondance sera appliquée.
Ce que j'ai:
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer
local all all md5
Ce que je voudrais (syntaxe invalide):
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer-or-md5
local all all md5
Voici quelques détails supplémentaires sur l'environnement dans lequel nous aimerions l'utiliser:
Sur ce serveur particulier, toutes les bases de données sont relativement petites (<10 Mo de données chacune) et purement en lecture seule. Ils sont lâchés et recréés chaque nuit par le superutilisateur harold. harold est également un compte système, donc "peer" fonctionne bien pour les tâches cronless sans mot de passe, etc. Ensuite, il y a une interface web accédant aux bases de données: elle utilise l'authentification md5 (l'utilisateur système est le serveur web, le nom d'utilisateur pg, le mot de passe et le nom de la base de données sont fournis par les visiteurs). Maintenant, je voudrais également permettre à l'utilisateur harold de se connecter via l'interface Web. Cela échoue en raison du paramètre "peer" pour harold.
La solution de contournement actuelle consiste à laisser l'interface Web se connecter via TCP, en utilisant
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
en plus des entrées locales dans le premier exemple. Cela fonctionne, mais je préfère également utiliser des sockets locaux - pour les performances et en raison du sentiment profond que cela semble être la bonne chose à faire.
Est-ce possible? Existe-t-il de meilleures solutions de contournement pour nous?