No meu caso, eu queria impedir a listagem de tabelas e visualizações do banco de dados que possui 2 esquemas:
- público
- bi
E eu queria evitar que qualquer listagem de tabelas e visualizações fosse pública para um usuário específico, portanto, consultei esta resposta: https://dba.stackexchange.com/a/177272/118215
Mas enquanto lia a resposta, notei que ROLE é diferente de USER e o login é uma "entidade" diferente das acima.
Apesar de estarem relacionados, não consigo entender a diferença entre:
- Conecte-se
- PAPEL
- DO UTILIZADOR
Portanto, alguém pode explicar a diferença?
A única entidade que o PostgreSQL possui é um ROLE. O ROLE pode possuir objetos (tabelas, visualizações) e ser uma "função de grupo". Mas não existem entidades como LOGIN e USER. Outros DBMS têm "login", "usuário", "grupo", "função" como entidades separadas (Oracle, MSSQL, etc). Mas o PostgreSQL é único assim, tem apenas ROLE.
Se ROLE tiver atributo de login - é chamado de LOGIN. Em seguida, um cliente (um humano ou algum serviço automático) se conecta ao banco de dados, o cliente fornece um nome para tal função. Qualquer função pode ter um atributo de login.
Não há entidade USUÁRIO. Por conveniência, o DBMS tem duas funções
mas eles são apenas invólucros ao redor
A maneira mais fácil de pensar sobre isso: um USUÁRIO é apenas um PAPEL que pertence a uma única pessoa. Mas isso é apenas uma conveniência.
Se você deseja que várias pessoas tenham acesso a uma tabela, a maneira mais conveniente de fazer isso é criar uma função de grupo (
GRANT group_role TO role1, role2, role3
) e fornecer acesso group_role à tabela. Agora, quando uma pessoa fizer login norole1
e tentar acessar uma mesa - a permissão será verificadarole1
egroup_role
- se pelo menos uma delas tiver acesso - sucesso.As funções são como (por exemplo) Administrador, Gerente, Secretário, Desenvolvedor. É como uma função de negócios. Você pode atribuir permissões a diferentes entidades conforme necessário (como ser capaz de selecionar apenas de determinadas tabelas). As funções também podem, opcionalmente, efetuar login.
Os usuários podem pertencer a uma função. Mais comumente, vários usuários são atribuídos a uma Função. Dessa forma, você pode controlar como as coisas são acessadas de maneira mais estruturada. Os usuários também podem fazer login.
Consulte Qual é a diferença entre um usuário e uma função?
E diferença entre papéis e usuários