Я попытался настроить пользователя только для чтения в 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