Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

psql: FATAL: role "postgres" does not exist (with -h localhost option)

I have Postgres installed in my local machine.

When I execute

psql -U postgres -d buzzsumo

it correctly asks for my password to the user postgres.

However, when I run

psql -U postgres -d buzzsumo -h localhost

it gives me this error message:

psql: FATAL: role "postgres" does not exist

Why is this the case, when in the first example I am connecting to my local server, which is equivalent to passing in localhost?

like image 388
Henley Avatar asked Feb 13 '13 02:02

Henley


2 Answers

You don't say but I'm guessing you're running postgres on either on MacOS or Linux.

The first form (with no -h) connects via a "unix socket". The second form, with "-h localhost" connects via TCP/IP to localhost (IP address 127.0.0.1).

Postgres treats these two types of connections differently - or at least, it can do so. If you check the "pgsql/data/pg_hba.conf" file to see what authentication mechanisms are configured for the two types of connections.

like image 175
boris Avatar answered Sep 28 '22 10:09

boris


Your first example connects via Unix socket, the second one via TCP/IP local loop (localhost).

For the first example, you need the connection type local in pg_hba.conf, for the second lines starting with host are relevant. You probably have defined different authentication methods for these classes of connections.

like image 34
Erwin Brandstetter Avatar answered Sep 28 '22 11:09

Erwin Brandstetter