Capítulo 18. Funções e Privilégios do Banco de Dados
On Outubro 25, 2021 by adminAs funções do banco de dados são conceitualmente completamente separadas dos usuários do sistema operacional. Na prática, pode ser conveniente manter uma correspondência, mas isto não é necessário. As funções da base de dados são globais através de uma instalação de cluster de bases de dados (e não por base de dados individual). Para criar uma função use o comando CREATE ROLE SQL:
CREATE ROLE name;
name segue as regras para identificadores SQL: ou sem adornos sem caracteres especiais, ou com aspas duplas. (Na prática, você normalmente vai querer adicionar opções adicionais, como o LOGIN, ao comando. Mais detalhes aparecem abaixo). Para remover uma função existente, use o comando análogo DROP ROLE:
DROP ROLE name;
Para conveniência, os programas createuser e dropuser são fornecidos como wrappers em torno destes comandos SQL que podem ser chamados a partir da linha de comandos da shell:
createuser namedropuser name
Para determinar o conjunto de funções existentes, examine o catálogo do sistema pg_roles, por exemplo
SELECT rolname FROM pg_roles;
O meta-comando do programa psql \du também é útil para listar as funções existentes.
A fim de inicializar o sistema de banco de dados, um sistema recém inicializado sempre contém uma função pré-definida. Esta função é sempre um “super usuário”, e por padrão (a menos que seja alterada ao executar o initdb) ela terá o mesmo nome do usuário do sistema operacional que inicializou o cluster do banco de dados. Normalmente, esta função será nomeada postgres. Para criar mais funções você primeiro tem que se conectar como esta função inicial.
Todas as conexões com o servidor de banco de dados são feitas em nome de alguma função em particular, e esta função determina os privilégios de acesso inicial para comandos emitidos nessa conexão. O nome da função a usar para uma determinada conexão de banco de dados é indicado pelo cliente que está iniciando a solicitação de conexão de uma forma específica da aplicação. Por exemplo, o programa psql usa a opção de linha de comando -U para indicar a função a ser conectada como. Muitas aplicações assumem o nome do usuário do sistema operacional atual por padrão (incluindo createuser e psql). Portanto, muitas vezes é conveniente manter uma correspondência de nomes entre funções e usuários do sistema operacional.
O conjunto de funções de banco de dados que uma determinada conexão cliente pode conectar como é determinado pela configuração de autenticação do cliente, como explicado no Capítulo 20. (Assim, um cliente não está necessariamente limitado a conectar-se como a função com o mesmo nome do seu usuário do sistema operacional, assim como o nome de login de uma pessoa não precisa corresponder ao seu nome real). Uma vez que a identidade da função determina o conjunto de privilégios disponíveis para um cliente conectado, é importante configurar isto cuidadosamente ao configurar um ambiente multiusuário.
Deixe uma resposta