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

Разница между «доверием» и «идентификатором» postgreSQL?

В postgreSQL /var/lib/pgsql/data/pg_hba.conf trust и ident можно установить как method например вот так.

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         postgres                          trust
host    all         postgres    127.0.0.1/32          trust

У меня создалось впечатление, что разница между ними была в trust Я как root может сделать

psql postgres

и с ident Мне пришлось

sudo -u postgres psql postgres

Однако я не могу заставить работать первую команду даже с trust.

Вопрос

Может кто-нибудь объяснить, в чем разница trust и ident?

psql должен подключаться к базе данных с именем пользователя базы данных. Когда это не указано в -U вариант, он принимает имя пользователя ОС в качестве значения по умолчанию.

Так что на самом деле psql dbname эквивалентно psql -U $USER dbname

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

# psql postgres
psql: FATAL: роль "root" не существует

С другой стороны, он работал бы, если бы он был вызван таким образом, но все еще зарегистрирован как root:

# psql -U postgres postgres

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

«Доверие» означает «какое бы имя пользователя ни использовал клиент, вам не нужно запрашивать пароль для проверки пользователя».

«Идентификатор» означает «принять все, что идентификатор возвращает в качестве имени пользователя, не запрашивая пароль для проверки».

Дополнительную информацию о различных методах аутентификации можно найти на сайте сайт postgresql.

Чтобы выяснить, почему это конкретное соединение не удалось, вам нужно проверить журналы postgresql. Возможно, имя пользователя, которое вы используете, не существует в базе данных postgres, или это может быть какая-то другая проблема - это невозможно определить, не посмотрев сначала журналы.