Il tuo pg_hba.conf
dovrebbe effettivamente richiedere una password per le connessioni socket unix, ma ci sono ancora modi per aggirarlo che dovresti verificare:
-
un
.pgpass
nella home directory di postgres contenente la password (controlla anche il PGPASSFILE variabile di ambiente per un percorso non standard). -
il PGPASSWORD è possibile impostare la variabile di ambiente.
E c'è anche la possibilità che tu stia modificando il file pg_hba.conf sbagliato. Quando connesso come postgres, è possibile ottenere il percorso corretto per la verifica con il SHOW hba_file
Comando SQL.
Inoltre, potresti voler controllare il file di registro, /var/log/postgresql/postgresql-9.1-main.log
per confermare che i file di configurazione vengono ricaricati quando richiesto e cercare eventuali messaggi sospetti durante l'autenticazione.
Per quanto riguarda il motivo per cui le connessioni senza password con l'utente postgres sono comuni, il debian PG-9.1 pg_hba.conf
ha questo commento sul non consentirli:
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local all postgres peer
Poiché Debian e Ubuntu utilizzano gli stessi pacchetti postgres, questo vale anche per Ubuntu.