Я пытаюсь запустить tinyRSS на моем собственном сервере с помощью PostgreSql. Однако я продолжаю получать эту ошибку:
LOG: provided user name (tinyrss) and authenticated user name (apache) do not match
FATAL: Peer authentication failed for user "tinyrss"
Я понимаю, что postgresql использует аутентификацию на основе хоста, и поскольку у меня нет того же имени учетной записи (tinyrss), что и у хост-машины, мне нужно было использовать карту имени пользователя, поэтому я добавил эту строку в pg_ident.conf
:
# MAPNAME SYSTEM-USERNAME PG-USERNAME
tinyrss hongyi tinyrss
и под pg_hba.conf
:
# 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 ident map=tinyrss
# IPv6 local connections:
host all all ::1/128 ident
Могу ли я узнать, что я делаю неправильно, и решение этой проблемы? Заранее спасибо!
Поскольку вы используете ident
аутентификация и соединение с пользователем, у которого имя учетной записи операционной системы apache
, вам необходимо иметь отображение записи tinyrss
к apache
, как намекает сообщение.
Следующая строка должна работать для вас в вашем pg_ident.conf
:
tinyrss apache tinyrss
Я оставляю здесь свою подсказку, так как этот вопрос получил широкое распространение в Google в то время, когда я искал ответ.
Если вы используете ssl-аутентификацию, убедитесь, что ваше общее имя ~ / .postgresql / postgresql.crt совпадает с именем пользователя, с которым вы пытаетесь подключиться. Этот пользователь должен быть определен в pg_hba.conf на сервере, к которому вы пытаетесь подключиться. Также ваш клиент должен подключаться с разрешенного IP / хоста.
Надеюсь, это кому-то поможет.