Edoardo Panfili <edoardo@aspix.it> writes:
> I am using postgres 9.4beta3 (Debian jessie)
> this is my pg_hba.conf
> ----------------------
> local all postgres peer
> local all all md5
> host all all 127.0.0.1/32 md5
> host all all ::1/128 md5
> ----------------------
> but if I use psql to connect via tcp to the server (on the same machine)
> I can see two differente behaviours if I use "localhost" or "127.0.0.1"
> If I understand correctly the first two lines are useful only for Unix
> sockets and not for tcp-ip connection.
Yeah. On modern Linux distros it's quite likely that "localhost" is
resolving as IPv6 ::1, not 127.0.0.1, but in neither case would it match
your "local" lines. In any case, your first connection attempt is
definitely not connecting over a Unix socket because we never use SSL
with Unix sockets.
I can think of two plausible theories:
1. The postmaster isn't actually using the pg_hba.conf you think it is.
(Maybe you modified the file and forgot to do a "pg_ctl reload"?)
2. You have a "service file" active that is capturing the server name
"localhost" and redefining it to mean something other than the obvious
meaning.
http://www.postgresql.org/docs/9.3/interactive/libpq-pgservice.html
A useful test would be to try "psql -h ::1" and see which way that
behaves. If it does the same thing as "-h localhost" then we can
eliminate the service-file theory.
regards, tom lane