Vorrei che un utente PostgreSQL (super) fosse autenticato con i metodi di autenticazione "peer" o "md5", preferibilmente usando socket di dominio Unix locali in entrambi i casi. Il problema è che l'ordine delle voci in pg_hba.conf è importante e verrà applicata la prima corrispondenza.
Ciò che ho:
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer
local all all md5
Cosa vorrei (sintassi non valida):
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer-or-md5
local all all md5
Ecco alcuni dettagli sull'ambiente in cui vorremmo utilizzarlo:
Su questo particolare server, tutti i database sono relativamente piccoli (<10 MB ciascuno di dati) e di sola lettura. Vengono rilasciati e ricreati ogni notte dal superutente harold. harold è anche un account di sistema, quindi "peer" funziona bene per cronjob senza password ecc. Quindi c'è un'interfaccia web che accede ai database: utilizza l'autenticazione md5 (l'utente di sistema è il server web, il nome utente pg, la password e il nome db sono forniti da i visitatori). Ora vorrei che anche l'utente harold accedesse tramite l'interfaccia web. Questo non riesce a causa dell'impostazione "peer" per harold.
L'attuale soluzione alternativa consiste nel consentire all'interfaccia Web di connettersi tramite TCP, utilizzando
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
oltre alle voci locali nel primo esempio. Funziona, ma preferirei utilizzare anche le prese locali qui - per le prestazioni e per la sensazione che sembra la cosa giusta da fare.
È possibile? Ci sono soluzioni alternative migliori per noi?