Я установил PostgreSQL с помощью следующей команды:
$ sudo apt install postgresql postgresql-contrib libpq-dev
Оба help.ubuntu.com и Digitalocean согласен с тем, что после установки Postgres настроен на использование аутентификации идент
, что означает, что он связывает роли Postgres с соответствующей системной учетной записью Unix / Linux. Если в Postgres существует роль, имя пользователя Unix / Linux с тем же именем может выполнить вход в качестве этой роли. "
Однако в файле конфигурации аутентификации клиента по умолчанию для аутентификации установлено значение peer
или md5
:
$ sudo less /etc/postgresql/10/main/pg_hba.conf
...
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
Я использую PostgreSQL как Разработка базы данных для Ruby on Rails и она отлично работает. Какой метод аутентификации я использую, учитывая, что я никогда не редактировал pg_hba.conf
?
Документ PostgreSQL говорит о идент
в своем списке методов аутентификации :
Аутентификация , которая опирается на «Протокол идентификации» (RFC 1413) сервис на компьютере клиента. (На локальном Unix-сокете 1 ) не упоминаются в
pg_hba.conf
какlocal
, это значение означает исключительно доменные сокеты Unix. Это иногда сбивает с толку, потому что люди часто называют TCP-соединения через localhost (127.0.0.1) локальными.Они часто по умолчанию настроены на использование пароля, например:
host all all 127.0.0.1/32 md5
В настоящее время вы используете аутентификацию по паролю, и вы выбрали алгоритм шифрования md5, и вот процедура для сброса пароля
Переключитесь на пользователя PostgreSQL
на пользователя по умолчанию PostgreSQL, postgres:
su - postgres
, затем попытайтесь соединение с PostgreSQL:
psql
правильный, правильный ответ будет похож на: https://www.postgresql.org/docs/9.1/auth-methods.html