Ошибка аутентификации паролей Postgres

Я попытался войти с пользователем postgres с моей машины Windows на свой сервер с помощью Pgadmin.

Но он продолжает давать мне эту ошибку:

psql: FATAL:  password authentication failed for user "postgres"

Итак, я попытался войти в систему из командной строки с psql, что дало мне ту же ошибку. Затем я установил пароль для "теста" с помощью psql, после того, как он положил локальную запись в pg_hba.conf. Затем я вернул запись в md5 и попытался войти в систему с паролем "test".

В psql я использовал следующие команды:

ALTER ROLE postgres WITH PASSWORD 'test';
ALTER ROLE postgres PASSWORD 'test';
ALTER USER postgres WITH PASSWORD 'test';
ALTER USER postgres PASSWORD 'test';

И эта специальная команда psql

\password

Каждый раз я возвращал локальную запись pg_hba.conf в md5 и пытался войти в систему с помощью psql:

psql -U postgres

И затем меня попросят ввести пароль. После ввода "test" psql дает мне ту же ошибку, что и я упоминал ранее.

И, конечно же, я перезапустил postgresql после каждого изменения файла pg_hba. И я использую psql с "su postgres".

Итак, хотя я могу изменить пароль обычным способом, он не принимается как пароль.

Я надеюсь, что кто-то сможет мне помочь.

Некоторая информация:

Postgresql 9.1 Ubuntu 12.04

Файл Pg_hba (по запросу)

local   all             postgres                                md5

local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

host    all             all             <my-ip-address>/32        md5

Когда я хотел изменить пароль, я изменил верхний md5 на доверие. Я хочу упомянуть, что эта конфигурация работала без проблем раньше.

Результаты

sudo -u postgres psql -x -c "select * from pg_user where usename='postgres'"

А:

usename     | postgres
usesysid    | 10
usecreatedb | t
usesuper    | t
usecatupd   | t
userepl     | t
passwd      | ********
valuntil    | 1970-01-01 00:00:00+01
useconfig   |

Ответ 1

Как показано в последнем правлении, пароль действителен до 1970 года, что означает, что он в настоящее время недействителен. Это объясняет сообщение об ошибке, которое совпадает с неверным паролем.

Reset действительность с:

ALTER USER postgres VALID UNTIL 'infinity';

В недавнем вопросе у другого пользователя была такая же проблема с учетными записями пользователей и PG-9.2:

PostgreSQL - аутентификация паролей после добавления ролей групп

По-видимому, существует способ непреднамеренно установить срок действия фальшивого пароля для эпохи Unix (1 января 1970 года, минимально возможное значение для типа abstime). Возможно, есть ошибка в самом PG или в каком-то клиентском инструменте, который создаст эту ситуацию.

EDIT: он оказывается ошибкой pgadmin. См. https://dba.stackexchange.com/questions/36137/

Ответ 2

pg_hba.conf запись определяет методы входа в систему по IP-адресам. Чтобы получить правильную помощь, вам нужно показать соответствующую часть pg_hba.conf.

Измените эту строку:

host    all             all             <my-ip-address>/32        md5

Чтобы отразить настройки локальной сети. Итак, если ваш IP 192.168.16.78 (класс C) с маской 255.255.255.0, тогда поставьте это:

host    all             all             192.168.16.0/24        md5

Убедитесь, что ваша WINDOWS MACHINE находится в этой сети 192.168.16.0 и повторите попытку.

Ответ 3

Я столкнулся с этим вопросом, и ответы здесь не сработали для меня; я не мог понять, почему я не могу войти и получил вышеуказанную ошибку.

Оказывается, postgresql сохраняет имена пользователей в нижнем регистре, но во время аутентификации он использует как верхний, так и нижний регистр.

CREATE USER myNewUser WITH PASSWORD 'passWord';

создаст пользователя с именем пользователя mynewuser и паролем passWord.

Это означает, что вы должны аутентифицироваться с помощью "mynewuser", а не с помощью "myNewUser". Для новичков в pgsql, подобных мне, это было непонятно. Надеюсь, это поможет другим, столкнувшимся с этой проблемой.