Не работает md5 аутентификация

стоит PostgreSQL 9.2.24 на
Сentos 7

сделал такой конфиг
# "local" is for Unix domain socket connections only
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

Но почему то если задать пароль в виде md5 хеша ничего не работает, а если пароль в обычном виде то все ок
Все одинаково не работает на php сайте который использует postgres и в phppgadmin

так же нужен бекап БД по крону, он работает вообще только если вместо md5 поставить trust
строка в кроне
/usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /backup/bd.backup bd_name

файл .pgpass с правами 600 в директории рут положил
в таком виде
127.0.0.1:5432:bd_name:login:pass

подскажите что не так и как это исправить ?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Команда: ALTER USER

Команда:

ALTER USER имя_юзверя WITH ENCRYPTED PASSWORD 'пароль';

устанавливает пользователю зашифрованный в MD5 пароль. Если пароль уже указан в MD5, то он сохраняется как есть.

При задании правил в pg_hba.conf нужно учитывать, что local - это для коннектов по сокету, а также что после внесения изменений в данный файл, необходим перезапуск PostgreSQL, чтобы эти изменения заработали.

Проверяем всё через утилиту psql. Если с ней всё работает - смотрите настройки приложений.

Вместо .pgpass можно использовать переменную окружения PGPASSWORD:
https://postgrespro.ru/docs/postgrespro/10/libpq-envars

не получилось

в конфиге pg_hba.conf поставил везде trust
потом в консоле SSH под рутом сделал
sudo -u postgres psql
и потом команду
ALTER USER имя_юзверя WITH ENCRYPTED PASSWORD 'пароль';

после выполнение команды в консоле появилась запись ALTER ROLE

имя юзера в команде ALTER USER не postgres а тот который используется в php
пароль в команде ALTER USER пишу не зашифрованый

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

при любом изменении pg_hba.conf перезагружаю базу данных

Если у вас стоит trust то

Если у вас стоит trust то вообще пофигу какой пароль - он тупо не нужен.
Проверяли подключение через psql?

нет trust я поставил чтобы в

нет trust я поставил чтобы в консоле выполнить команду ALTER USER
А потом менял на md5 чтобы проверить в php

Проверяли подключение через psql?
если имеете ввиду в консоле по SSH, то я не смог даже переключиться на юзера postgres чтобы выполнять команды если в pg_hba.conf стоял md5, только если стоит trust

Как я уже писал, все проверки

Как я уже писал, все проверки подключения надо делать в psql, а потом уже если работает крутить PHP, а если не работает, добиваться работы именно с psql.

>> я не смог даже переключиться на юзера postgres чтобы выполнять команды
Ну так смогите. Кто не даёт?
Тем более, что для вызова psql не нужно переключаться на пользователя postgres. Вообще пользователь postgres является пользователем-администратором (аналог root только внутри PostgreSQL) и работать под ним из PHP - это крайне дурной тон.

А так, чтобы переключиться, достаточно выполнить:

# su - postgres

опять ничего

вот полный лог команд

sudo -u postgres psql
could NOT CHANGE directory TO "/root"
psql (9.2.24)
Type "help" FOR help.
 
postgres=# ALTER USER bd_user WITH ENCRYPTED PASSWORD '12345';
ALTER ROLE
 
 
postgres=# \connect bd_name bd_user
Password FOR user bd_user:
You are now connected TO DATABASE "bd_name" AS user "bd_user".

в конфиге pg_hba.conf перед выполнением всех команд поставил везде md5
А при подключении к бд ввожу пароль в обычном виде 12345, хотя перед этим как видно по логу я его по вашему совету преобразовал в зашифрованный, не понимаю как такое может быть ?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023