2012-07-11 3 views
19

Come posso impostare più metodi di autenticazione per lo stesso host/database/regola utente? Voglio poter accedere al mio utente postgres usando sia sudo -u postgres psql -U postgres (senza dover inserire una password di PostgreSQL) e psql -U postgres --password. Qualcosa di simile a quanto segue in pg_hba.conf:PostgreSQL metodi di autenticazione multipli

local all    postgres      md5 
local all    postgres      peer 

posso solo ottenere un metodo o l'altro a lavorare allo stesso tempo.

Grazie.

(sto usando PostgreSQL 9.1).

risposta

21

No. È supportato un solo metodo auth per ogni configurazione specificata.

Mi piacerebbe se Pg potesse supportare l'autenticazione di fallback, dove se un controllo di identità fallisce, consente invece l'autenticazione md5. Al momento non supporta questo, e sospetto (non ho verificato) che sarebbe necessario un cambio di protocollo per supportarlo.

Che cosa si può fare è memorizzare la password in un file $HOME/.pgpass per l'utente del sistema postgres. Dagli la modalità 0600 in modo che sia leggibile solo dall''utente postgres e dallo root, entrambi i quali possono ottenere comunque l'accesso diretto ai file del database e alla configurazione. In questo modo si ottiene admin semplice e md5 auth. Su alcuni sistemi potrebbe essere necessario impostare e creare una directory home per l'utente postgres prima di poterlo fare. Vedere getent passwd postgres per vedere se l'utente postgres ha un homedir e, in tal caso, dove si trova.

(UPDATE: utilizzato per leggere $HOME/.psqlrc - che è utile, ma .pgpass è adatto per la memorizzazione delle password)

+0

Vedi http://www.postgresql.org/docs/9.5/static/libpq-pgpass. html per i dettagli –