Назад | Перейти на главную страницу

Почему пользователь не может войти в систему в Postgres

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

Когда я пытаюсь войти в систему как пользователь XXXX, я получаю сообщение об ошибке - psql: FATAL: аутентификация пароля не удалась для пользователя «XXXX»

Глядя в файл журнала, я вижу следующие строки:

< 2014-05-20 10:22:24.830 NZST >FATAL:  password authentication failed for user "XXXX"
< 2014-05-20 10:22:24.830 NZST >DETAIL:  Connection matched pg_hba.conf line 104: "host DATABASENAME        XXXX           10.0.0.0/8              md5"

Я, конечно, пытался сбросить пароль - несколько раз, но безрезультатно. Я попытался изменить пароль с md5 на пароль, который не помог. Интересно, что установка механизма аутентификации на «доверие» действительно сработала.

Я использую Postgres 9.3.

Я не могу удалить этого пользователя, чтобы сбросить его - я получаю сообщение об ошибке «ОШИБКА: роль« XXXX »не может быть удалена, потому что от нее зависят некоторые объекты. ДЕТАЛИ: привилегии для базы данных DATABASENAME»

Если я создам нового пользователя, у этого нового пользователя не будет проблем с подключением к базе данных. (Я продублировал соответствующую строку в pg_hba.conf и, конечно же, изменил имя пользователя)

Выполнение команды «предоставить все на DBNAME для XXXX», похоже, не имеет никакого значения.

Когда я выполняю команду \ ddp, я получаю

    Default access privileges
  Owner   | Schema |   Type   | Access privileges 
----------+--------+----------+-------------------
 postgres | public | sequence | XXXX=r/postgres
 postgres | public | table    | XXXX=r/postgres

Я не совсем уверен, почему это должно помешать мне полностью удалить пользователя и воссоздать его - или как [безопасно] это исправить.

Мы будем очень благодарны за любое понимание того, что происходит или как дальше отлаживать проблемы входа в систему.

При получении этой ошибки:

psql: FATAL: не удалось выполнить аутентификацию пароля для пользователя «XXXX»

несмотря на правильный пароль, следующее, что нужно проверить, - это действительность учетной записи:

SELECT usename, valuntil FROM pg_user;

Видеть Пользователь PostgreSQL не может подключиться к серверу после смены пароля о том, как ошибка в PgAdmin может неправильно сбросить это valuntil в прошлом, из-за чего пользователь не мог подключиться к упомянутому сообщению об ошибке.

Если это ваш случай, вы можете исправить это с помощью:

ALTER USER username VALID UNTIL 'infinity';

Я боролся с этим несколько раз и придумал следующий метод.

1) Измените pg_hba.conf и установите режим аутентификации на «trust» для записей «local» и «host»:

местные все доверяют

хост все все 127.0.0.1/32 доверяют

2) Перезагрузите базу данных: postgres $ pg_ctl restart

3) Зайдите в базу данных и установите пароль postgres:

postgres $ psql

postgres = # изменить пароль пользователя postgres 'mypassword';

ИЗМЕНИТЬ РОЛЬ

postgres = # \ q

4) Установите механизм аутентификации обратно на пароль в pg_hba.conf:

локально все все пароль

хост все все 127.0.0.1/32 пароль

(Я предполагаю, что это также сработает для аутентификации md5, но не пробовал)

5) Перезагрузите базу данных в последний раз: postgres $ pg_ctl restart