Назад | Перейти на главную страницу

Postgresql Указанное имя пользователя и имя пользователя, прошедшего проверку подлинности, не совпадают

Я пытаюсь запустить 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 / хоста.

Надеюсь, это кому-то поможет.