Неизвестная причина ошибки аутентификации пароля postgres - PullRequest
0 голосов
/ 18 мая 2018

Мне не удается войти в систему и использовать созданную базу данных, поскольку я получаю пароль или ошибку аутентификации равноправного узла.Ниже описывается, как я настраиваю вещи, как я пытался исправить возникшие проблемы, а также дополнительная потенциально важная информация.

Я использую postgresql-9.5, и когда я загружал postgres, он имел другое имя пользователя / пользователя linux mint, с которого я сейчас пытаюсь получить к нему доступ.Все команды ниже были отправлены от нового пользователя / имени пользователя.

Я создал новую базу данных postgres и нового пользователя с паролем со следующими командами: sudo su - postgres

$ psql

postgres=# CREATE DATABASE PostgresDB;

postgres=# CREATE USER PostgresUser WITH PASSWORD 'password';

postgres=# ALTER ROLE PostgressUser SET default_transaction_isolation TO 'read committed'

postgres=# GRANT ALL PRIVILEGES ON DATABASE PostgresDB TO PostgresUser;

Затем я попытался войти в систему под номером.способов:

  • psql -d PostgresDB -U PostgresUser

Возвращает: psql: FATAL: Peer authentication failed for user "PostgresUser"

  • psql -d PostgresDB -U PostgresUser -W и ввод пароля
  • psql -d, psql -U PostgresUser -h 127.0.0.1 -d PostgresDB и ввод пароля

Каждый Возвращает: psql: FATAL: password authentication failed for user "PostgresUser"

Я сделал все вышеперечисленные попытки войти в систему до и после сброса пароля с помощью: ALTER PostgresUser WITH PASSWORD 'password'

Я проверил файл pg_hba.conf, важные части которого читаем:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "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
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     md5
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Несмотря на то, что не удалось повторить все, используя строчную базу данных и имена пользователей, я смог решить эту проблему другим способом.

Используя инструкции, изложенные в принятом ответе на этот вопрос (Как тщательно очистить и переустановить postgresql на ubuntu? ), я удалил на компьютере все, что связано с PostgresSQL, и переустановил.Я не смог войти в систему с помощью: psql -d postgresdb -U postgresdbuser или psql -d postgresdb -U postgresdbuser -W.

Однако мне удалось войти в базу данных с помощью: psql -U postgresdbuser -h 127.0.0.1 -d postgresdb

0 голосов
/ 18 мая 2018

Вы пытались просмотреть файл журнала?

Чтобы решить загадку, попробуйте следующее:

SELECT usename, usesysid FROM pg_user;

Вы заметите, что имя пользователя в нижнем регистре.

Это потому, что PostgreSQL сворачивает все символы в операторе SQL в нижний регистр (стандарт SQL устанавливает, что SQL не учитывает регистр).

Однако оболочка чувствительна к регистру, поэтому вы пытаетесь подключитьсяс именем пользователя, которого не существует.

Как только вы пройдете этот опыт, вы, вероятно, поймете, почему стоит всегда использовать только нижерегистр символов и цифр в именах объектов базы данных.

Если вы настаиваете на символах верхнего регистра, вам придется заключить имя в двойные кавычки.

...