Могу ли я упростить использование postgres_fdw, если иностранная БД находится на том же сервере - PullRequest
0 голосов
/ 18 мая 2018

мой сервер имеет несколько баз данных.Я хочу иметь возможность читать db1 из запросов в db2.Я знаю, что могу использовать postgres_fdw, но у этого есть пара недостатков.Основным является то, что я должен передавать учетные данные, беспокоиться о смене паролей и т. Д.

1 Ответ

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

, поэтому вы настраиваете сервер, сопоставление пользователей и создаете таблицы:

t=# create server l foreign data wrapper postgres_fdw options (host 'localhost', dbname 't');
CREATE SERVER
t=# create user mapping FOR postgres SERVER l;
CREATE USER MAPPING
t=# create table lt(i serial);
CREATE TABLE
t=# insert into lt default values;
INSERT 0 1
t=# create foreign table ft (i int) server l options(table_name 'lt') ;
CREATE FOREIGN TABLE
t=# select * from ft;
 i
---
 1
(1 row)

сейчас Если я добавлю md5 в hba перед доверием локального соединения по умолчанию, я получу:

t=# select * from ft;
ERROR:  could not connect to server "l"
DETAIL:  fe_sendauth: no password supplied

ивернуться:

t=# \! sed -i '43s/host/#host/' /pg/d10/pg_hba.conf
t=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

t=# select * from ft;
 i
---
 1
(1 row)

в то время как строка:

t=# \! sed '43,43!d' /pg/d10/pg_hba.conf
#host   all     postgres    127.0.0.1/32        md5

Итак, моя точка зрения такова: если у вас есть локальные базы данных, вам по умолчанию не нужно манипулировать паролями, как у вас естьpeer или trust для localhost ...

update , поэтому для работы на localhost без пароля для некоторого пользователя вам нужна строка, например:

host    fdw_db      postgres    127.0.0.1/32        trust

toидти перед строкой, например:

host    all     all 127.0.0.1/32        md5

или любой другой строкой, которая ограничивает или отклоняет соединения

https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

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

...