psql: ошибка: не удалось подключиться к серверу: FATAL: не удалось выполнить аутентификацию однорангового узла для пользователя - PullRequest
0 голосов
/ 06 августа 2020

Я более 5 раз пытался пройти аутентификацию с помощью простого пароля. В противном случае я сбросил пароль и попробовал еще раз:

owner@G700:~/cp/projFolder$ sudo -u postgres psql
psql (12.3 (Ubuntu 12.3-1.pgdg20.04+1))
Type "help" for help.

postgres=# alter user ctvmUser with password '1234';
ALTER ROLE
postgres=# \q

owner@G700:~/cp/projFolder$ psql -U ctvmUser -W -d callTrackVoipMs -a -f /home/owner/cp/projFolder/src/databaseScripts/createTables.sql;
Password: 
psql: error: could not connect to server: FATAL:  Peer authentication failed for user "ctvmUser"

После этой попытки я попытался скопировать / вставить 1234, и он по-прежнему выдавал ту же ошибку.

Я подозреваю, что это что-то еще. вопрос. Что еще может помешать мне аутентифицироваться с помощью psql?

Я запускаю PostgreSQL 12 на Lubuntu 20.04 локально (и предполагаемое взаимодействие с базой данных является локальным).

Другие попытки

Флаг без -W

owner@G700:~/cp/projFolder$ psql -U ctvmUser -d callTrackVoipMs -a -f /home/owner/cp/projFolder/src/databaseScripts/createTables.sql;
psql: error: could not connect to server: FATAL:  Peer authentication failed for user "ctvmUser"

Обновление pg_hba.conf

PG :: ConnectionBad: FATAL: Peer Ошибка аутентификации из-за ошибки «имя пользователя»

Строка local all all local не найдена:

# 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

Добавить флаг -h с localhost аргументом

Сначала я добавил эту строку в самый конец файла pg_hba.conf

host    all             all             127.0.0.1/32            md5

-h флаг с localhost и вывод:

owner@G700:~/cp/voip_call_track_backend$ psql -U ctvmUser -d callTrackVoipMs -a -f /home/owner/cp/voip_call_track_backend/src/databaseScripts/createTables.sql -h localhost;
Password for user ctvmUser: 

psql: error: could not connect to server: FATAL:  password authentication failed for user "ctvmUser"
FATAL:  password authentication failed for user "ctvmUser"

1 Ответ

1 голос
/ 06 августа 2020

Вы хотите добавить -h localhost или -h 127.0.0.1 к psql аргументам, чтобы можно было применить это правило аутентификации:

host    all             all             127.0.0.1/32            md5

(md5 подразумевает, что пароль запрошен).

Когда вы опускаете параметры -h, он по умолчанию подключается к сокету домена Unix, поэтому попытка подключения сопоставляется со строкой local all all peer. "peer" означает, что пользователь ОС должен совпадать с пользователем базы данных (что не так из-за -U ctvmUser) и что пароль игнорируется.

В качестве альтернативы, если вы предпочитаете аутентифицировать локальных пользователей с паролями замените local all all peer на local all all md5.

...