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 .
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 da aplicação. 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. Muitas aplicações 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.