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

Включите в PostgreSQL аутентификацию как identity, так и md5

В Fedora 12 я настраиваю для себя тестовую базу данных, а pg_hba.conf по умолчанию содержит следующее:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               ident

Я хочу включить логины md5, чтобы пользователь PostgreSQL с именем «foo» мог получить доступ к базе данных с именем «foo». Однако, когда я добавляю эту строку и перезапускаю postgres:

local   foo         foo                               md5

Запуск psql -U 'foo' с моей учетной записью обычного пользователя по-прежнему выдает сообщение:

psql: FATAL:  Ident authentication failed for user "foo"

Мне нужно удалить первую локальную строку (с идентификатором), прежде чем я смогу войти через md5 в 'foo'.

Как я могу включить аутентификацию md5 для 'foo', сохранив идентификацию, как я уже сделал?

https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html указывает, что порядок записей имеет значение, а именно:

Поскольку записи pg_hba.conf проверяются последовательно для каждой попытки подключения, порядок записей имеет значение. Как правило, более ранние записи будут иметь параметры точного соответствия и более слабые методы аутентификации, тогда как более поздние записи будут иметь более слабые параметры соответствия и более строгие методы аутентификации. Например, можно использовать доверительную аутентификацию для локальных соединений TCP / IP, но требовать пароль для удаленных соединений TCP / IP. В этом случае запись, определяющая аутентификацию доверия для соединений из 127.0.0.1, появится перед записью, определяющей аутентификацию по паролю для более широкого диапазона разрешенных IP-адресов клиентов.

(так что попробуйте поменять порядок - поместите строку, которую вы добавляете, вверху)