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

Разрешить два метода входа для одного и того же пользователя в PostgreSQL

У меня есть сервер PostgreSQL, работающий на удаленном сервере Debian Squeeze. Я хочу войти под пользователем Postgres используя идентификатор и мкр5 метод в то же время. Первый нужен для обслуживания debian. Последний для подключения моего локального клиента postgresql через перенаправление портов ssh.

Мой первый подход заключался в том, чтобы добавить следующие строки с пользовательским прогрессом:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         postgres                          ident
local   all         postgres                          md5

По-видимому, это не работает, и официальная документация объясняет:

Первая запись с совпадающим типом соединения, адресом клиента, запрошенной базой данных и именем пользователя используется для аутентификации. Отсутствует «провал» или «резервное копирование»: если выбрана одна запись и аутентификация не удалась, последующие записи не рассматриваются. Если ни одна запись не соответствует, доступ запрещен.

Поскольку первые три столбца совпадают, postgresql просто выберет первый, с которым столкнется.

Мой обходной путь - создать второго суперпользователя с именем root

CREATE ROLE root LOGIN SUPERUSER CREATEROLE CREATEDB PASSWORD 'newpassword';

и поместите в pg_hba.conf следующее:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         postgres                          ident
local   all         root                              md5

Есть ли лучшее решение без создания второго пользователя?

Поскольку вы подключаетесь через переадресацию портов, ваше соединение будет host в любом случае введите соединение, и его следует настроить как таковое. Я предполагаю, что это соединение будет от 127.0.0.1/32 чтобы вы настроили

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