стоит 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
Команда:
устанавливает пользователю зашифрованный в 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 - это крайне дурной тон.
А так, чтобы переключиться, достаточно выполнить:
опять ничего
вот полный лог команд
в конфиге pg_hba.conf перед выполнением всех команд поставил везде md5
А при подключении к бд ввожу пароль в обычном виде 12345, хотя перед этим как видно по логу я его по вашему совету преобразовал в зашифрованный, не понимаю как такое может быть ?