Capítulo 17. Usuários do banco de dados e privilégios

Sumário
17.1. Usuários de banco de dados
17.2. Atributos do usuário
17.3. Grupos
17.4. Privilégios
17.5. Funções e gatilhos

Todo agrupamento de bancos de dados possui um conjunto de usuários de banco de dados. Estes usuários são distintos dos usuários gerenciados pelo sistema operacional onde o servidor executa. Os usuários possuem objetos de banco de dados (por exemplo, tabelas), e podem conceder privilégios nestes objetos para outros usuários controlando, assim, quem pode acessar qual objeto.

Este capítulo descreve como criar e gerenciar usuários, e introduz o sistema de privilégios. Mais informações sobre os vários tipos de objetos de banco de dados e os efeitos dos privilégios podem ser encontrados no Capítulo 5.

17.1. Usuários de banco de dados

Conceitualmente, os usuários de banco de dados são completamente distintos dos usuários de sistema operacional. Na prática, pode ser conveniente manter correspondência, mas não é requerido. Os nomes dos usuários de banco de dados são globais para todo o agrupamento de bancos de dados (e não próprio de cada banco de dados). Para criar um usuário deve ser utilizado o comando SQL CREATE USER:

CREATE USER nome_do_usuário;

Onde nome_do_usuário segue as regras dos identificadores SQL: ou não contém caracteres especiais, ou está entre aspas. Para remover um usuário existente deve ser utilizado o comando DROP USER:

DROP USER nome_do_usuário;

Para facilitar, são fornecidos os programas createuser e dropuser que incorporam estes comandos SQL, e que podem ser executados a partir do interpretador de comandos:

createuser nome_do_usuário
dropuser nome_do_usuário

Para conhecer o conjunto de usuários existentes deve ser consultado o catálogo do sistema pg_user como, por exemplo:

SELECT usename FROM pg_user;

Também pode ser utilizado o meta-comando \du do programa psql para listar os usuários existentes.

Para ser possível ativar o sistema de banco de dados, um sistema recém criado sempre contém um usuário pré-definido. É atribuído o valor 1 para o identificador deste usuário e, por padrão (a menos que seja alterado ao executar o utilitário initdb), possui o mesmo nome do usuário de sistema operacional que inicializou o agrupamento de bancos de dados. Geralmente este usuário se chama postgres. Para poder criar mais usuários, primeiro é necessário se conectar como este usuário inicial.

Em uma conexão com o servidor de banco de dados, está ativa a identidade de exatamente um usuário. O nome de usuário a ser utilizado em uma determinada conexão com o banco de dados é indicado pelo cliente ao fazer o pedido de conexão, de uma forma específica do aplicativo. Por exemplo, o programa psql utiliza a opção -U na linha de comando para indicar o usuário a ser utilizado na conexão. Muitos aplicativos assumem, por padrão, o nome do usuário corrente do sistema operacional (inclusive o createuser e o psql). Portanto, é conveniente manter uma correspondência de nomes entre estes dois conjuntos de usuários.

O conjunto de usuários de banco de dados que podem se conectar através de determinada conexão cliente é determinado pela configuração da autenticação de clientes, conforme explicado no Capítulo 19 (Portanto, um cliente não está necessariamente limitado a se conectar com o mesmo nome de usuário do sistema operacional, da mesma maneira que uma pessoa não está limitada no nome de login ao seu nome verdadeiro). Uma vez que a identidade do usuário determina o conjunto de privilégios disponíveis para o cliente conectado, é importante que isto seja definido com cuidado quando se configura um ambiente multiusuário.

SourceForge.net Logo CSS válido!