Имам отдалечена машина и се опитвам да вляза в база данни на postgres със следната команда (изпълни като Linux root
потребител чрез ssh
, т.е. локално на тази машина):
# psql -d mydatabase -U postgres -W
Password for user postgres: <here goes my password>
psql: FATAL: Peer authentication failed for user "postgres"
По някаква причина това се проваля (опитано ~5 пъти).
Но когато вляза в същата база данни с помощта на pgAdmin (т.е. дистанционно) със същата роля (postgres) и същата парола, тя влиза успешно всеки път.
Какво не е наред с командата psql
, която използвам? Ако е правилно, можете ли да предложите някакви стъпки за отстраняване на неизправности?
РЕДАКТИРАНЕ: Така че проблемът е, че в pg_hba.conf
отдалечените и локалните връзки се третират по различен начин. Дистанционните са конфигурирани правилно. Въпросът е защо местните не работят.
За местните имам в pg_hba.conf
:
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Правилно ли разбирам, че за localhost
връзки първо се опитва peer автентификация и ако не успее, не се опитва md5
и просто връща грешка?
psql
ще използва unix сокети. Проверетеpg_hba.conf
и главата за удостоверяване на клиента в ръководството. - person Craig Ringer   schedule 21.09.2015psql -U postgres -h 127.0.0.1 mydb
- person joop   schedule 22.09.2015