Recentemente eu configurei o Forward Data Wrapper. Aqui está o que eu faço:
CREATE SERVER foreign_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '192.168.125.1', port '5432', dbname 'template1 ');
IMPORT FOREIGN SCHEMA public LIMIT TO (tbl_test) FROM SERVER foreign_server INTO public;
Crie um usuário no servidor de destino/externo: CREATE USER fdwuser WITH PASSWORD 'secret'
E então faça as configurações necessárias como GRANT
. O FDW funciona.
Mas depois quero fazer mais. E se eu reunir todos os usuários que desejam acessar o FDW em um arquivo GROUP
. Então eu faço o seguinte:
Create group role
: demorole1create user
: fdwuser3grant demorole1 to fdwuser3
crie mapeamento de usuário para a função do grupo "demorole1" :
CRIAR MAPEAMENTO DE USUÁRIOS PARA OPÇÕES DE SERVIDOR demorole1 external_server (usuário 'fdwuser', senha 'secret');
select * from tbl_test;
-- falhou .conceda acesso demorole1 a tbl_test, esquema e servidor externo:
GRANT ALL ON TABLE tbl_test TO demorole1;
GRANT USAGE ON FOREIGN SERVER foreign_server TO demorole1;
GRANT USAGE ON SCHEMA public TO fdwuser3;
Teste:
select * from tbl_test;
-- falhou . mapeamento de usuário não encontrado para o usuário fdwuser3CREATE USER MAPPING FOR demorole1 SERVER foreign_server OPTIONS (user 'fdwuser', password 'secret');
Teste novamente:
select * from tbl_test;
- ainda falhou . mapeamento de usuário não encontrado para "fdwuser3"Faça o mapeamento do usuário:
CREATE USER MAPPING FOR fdwuser3 SERVER foreign_server OPTIONS (user 'fdwuser', password 'secret');
select * from tbl_test;
-- TRABALHOS
Pergunta: Como posso criar uma função de grupo para que os usuários no servidor local possam ser definidos como membros, para que eu não precise fazer o mapeamento de usuário Conceder e Criar toda vez que um usuário quiser acessar a tabela FDW?
Obrigado
Isso não é suportado. Você pode criar um mapeamento de usuário para o próprio usuário ou para
PUBLIC
, ou seja, para todos. Estas são suas escolhas. Um mapeamento de usuário criado para uma função não será usado para um membro dessa função. Isso está funcionando como projetado.