createuser

createuser — define uma nova conta de usuário do PostgreSQL

Sinopse

createuser [opção_de_conexão...] [opção...] [nome_do_usuário]

Descrição

O utilitário createuser cria um novo usuário do PostgreSQL (ou mais precisamente, uma nova função de banco de dados (role)). Somente os superusuários e usuários com o privilégio CREATEROLE podem criar novos usuários, então o utilitário createuser deve ser executado por alguém que possa se conectar como superusuário, ou um usuário com o privilégio CREATEROLE.

Se for desejado criar uma função de banco de dados (role) com o privilégio SUPERUSER, REPLICATION ou BYPASSRLS, é necessário se conectar como um superusuário, e não apenas com o privilégio CREATEROLE. Ser um superusuário implica na capacidade de ignorar todas as verificações de permissão de acesso dentro do banco de dados, portanto, o privilégio de ser um superusuário não deve ser concedido levianamente. CREATEROLE também confere privilégios muito amplos.

A aplicação createuser é um invólucro em torno do comando CREATE ROLE do SQL. Não há diferença efetiva entre a criação de usuários por meio desse utilitário ou por meio de outros métodos de acesso ao servidor.

Opções

A aplicação createuser aceita os seguintes argumentos de linha de comando:

nome_do_usuário

Especifica o nome do usuário do PostgreSQL a ser criado. Este nome deve ser diferente de todas as funções de banco de dados (roles) existentes nesta instância do PostgreSQL.

-a role
--with-admin=role

Especifica uma função de banco de dados (role) existente que será adicionada automaticamente como membro da nova função de banco de dados com opção de administrador, concedendo-lhe o direito de conceder a outros membros da nova função de banco de dados. É possível especificar várias funções de banco de dados existentes escrevendo várias opções -a.

-c número
--connection-limit=número

Define o número máximo de conexões para o novo usuário. O padrão é não definir nenhum limite.

-d
--createdb

O novo usuário terá permissão para criar bancos de dados.

-D
--no-createdb

O novo usuário não terá permissão para criar bancos de dados. Este é o padrão.

-e
--echo

Mostra os comandos que o createuser gera e envia para o servidor.

-E
--encrypted

Esta opção está obsoleta, mas ainda é aceita para manter a compatibilidade com as versões anteriores.

-g role
--member-of=role
--role=role (obsoleto)

Especifica que a nova função de banco de dados (role) deve ser adicionada automaticamente como membro da função de banco de dados existente especificada. É possível especificar várias funções de banco de dados existentes escrevendo várias opções -g.

-i
--inherit

A nova função de banco de dados herdará automaticamente os privilégios das funções de banco de dados das quais é membro. Este é o padrão.

-I
--no-inherit

A nova função de banco de dados não herdará automaticamente os privilégios das funções de banco de dados das quais é membro.

--interactive

Solicita o nome do usuário, se não tiver sido fornecido algum na linha de comando, e também solicita os valores das opções -d/-D, -r/-R, -s/-S, se estas opções de linha de comando não tiverem sido fornecidas explicitamente. (Este foi o comportamento padrão até o PostgreSQL 9.1.)

-l
--login

O novo usuário terá permissão para se conectar (ou seja, o nome do usuário poderá ser usado como o identificador de usuário da sessão inicial). Este é o padrão.

-L
--no-login

O novo usuário não terá permissão para se conectar. (Uma função de banco de dados sem o privilégio de se conectar ainda é útil como um meio de gerenciar as permissões do banco de dados.)

-m role
--with-member=role

Especifica uma função de banco de dados (role) existente que será adicionada automaticamente como membro da nova função de banco de dados. É possível especificar várias funções de banco de dados existentes escrevendo várias opções -m.

-P
--pwprompt

Se fornecido, o createuser emitirá um aviso de comando pedindo a senha do novo usuário. Não é necessário, se não se planeja usar a autenticação por senha.

-r
--createrole

O novo usuário poderá criar, alterar, excluir, comentar e modificar o rótulo de segurança de outras funções de banco de dados; ou seja, este usuário terá o privilégio CREATEROLE. Veja role creation para obter mais detalhes sobre as capacidades conferidas por este privilégio.

-R
--no-createrole

O novo usuário não terá permissão para criar novas funções de banco de dados. Este é o padrão.

-s
--superuser

O novo usuário será um superusuário.

-S
--no-superuser

O novo usuário não será um superusuário. Este é o padrão.

-v timestamp
--valid-until=timestamp

Define a data e hora após as quais a senha da função de banco de dados deixará de ser válida. O padrão é não definir uma data de expiração para a senha.

-V
--version

Mostra a versão do createuser, e termina.

--bypassrls

O novo usuário irá ignorar todas as políticas de segurança no nível de linha (RLS).

--no-bypassrls

O novo usuário não irá ignorar as políticas de segurança no nível de linha (RLS). Este é o padrão.

--replication

O novo usuário terá o privilégio REPLICATION, que é descrito mais detalhadamente na documentação do comando CREATE ROLE.

--no-replication

O novo usuário não terá o privilégio REPLICATION, que é descrito mais detalhadamente na documentação do comando CREATE ROLE. Este é o padrão.

-?
--help

Mostra a ajuda sobre os argumentos da linha de comando de createuser, e termina.

O utilitário createuser também aceita os seguintes argumentos de linha de comando para parâmetros de conexão:

-h hospedeiro
--host=hospedeiro

Especifica o nome de hospedeiro da máquina na qual o servidor está sendo executado. Se começar com uma barra, será usado como o diretório para o soquete de domínio Unix.

-p porta
--port=porta

Especifica a porta TCP, ou a extensão de arquivo de soquete de domínio Unix local, na qual o servidor está aguardando conexões.

-U nome_do_usuário
--username=nome_do_usuário

Nome do usuário para se conectar como (e não o nome do usuário a ser criado).

-w
--no-password

Nunca emite uma solicitação de senha. Se o servidor exigir autenticação por senha, e uma senha não estiver disponível por outros meios, como o arquivo .pgpass, a tentativa de conexão irá falhar. Esta opção pode ser útil em tarefas em lote e scripts nos quais nenhum usuário está presente para inserir uma senha.

-W
--password

Força o createuser solicitar uma senha (para se conectar ao servidor, e não a senha para o novo usuário).

Esta opção nunca é essencial, porque o createuser solicita automaticamente a senha se o servidor exigir autenticação por senha. No entanto, o createuser irá desperdiçar uma tentativa de conexão ao descobrir que o servidor pede uma senha. Em alguns casos vale a pena digitar -W para evitar a tentativa extra de conexão.

Variáveis de ambiente

PGHOST
PGPORT
PGUSER

Parâmetros de conexão padrão

PG_COLOR

Especifica se devem ser usadas cores nas mensagens de diagnóstico. Os valores possíveis são always, auto e never.

Este utilitário, como a maioria dos outros utilitários do PostgreSQL, também usa as variáveis de ambiente com suporte pela libpq (veja Variáveis ​​de ambiente).

Diagnósticos

Em caso de dificuldade, veja o comando CREATE ROLE e o utilitário psql para obter informações sobre possíveis problemas e mensagens de erro. O servidor de banco de dados deverá estar ativo no hospedeiro especificado. Além disso, se aplicam todas as configurações de conexão padrão e variáveis de ambiente usadas pela biblioteca cliente libpq.

Exemplos

Para criar o usuário joe no servidor de banco de dados padrão:

$ createuser joe

Para criar o usuário joe no servidor de banco de dados padrão, solicitando alguns atributos adicionais:

$ createuser --interactive joe
A nova role poderá criar superusuário? (s/n) n
A nova role poderá criar bancos de dados? (s/n) n
A nova role poderá criar novas roles? (s/n) n

Para criar o mesmo usuário joe, usando o servidor no hospedeiro eden, porta 5000, com atributos explicitamente especificados, vendo o comando subjacente:

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

Para criar o usuário joe como superusuário, e atribuir uma senha imediatamente:

$ createuser -P -s -e joe
Digite a senha para a nova role: xyzzy
Digite-a novamente: xyzzy
CREATE ROLE joe ↵
    PASSWORD 'SCRAM-SHA-256$4096:DTD3cpElwAb0G2+QEA9axw==$ ↵
             Depjhbioka1Id4HmU3faecJyFLoTISC/B1NHqsPepTk=: ↵
             4vsUNaKXV6h23rnJTFs/RACqF5p/OYFhdbe0/FlCung=' ↵
    SUPERUSER      ↵
    CREATEDB       ↵
    CREATEROLE     ↵
    INHERIT        ↵
    LOGIN          ↵
    NOREPLICATION  ↵
    NOBYPASSRLS;

No exemplo acima, a senha não é realmente mostrada quando digitada, mas foi mostrado o que foi digitado para maior clareza. Como pode ser visto, a senha é encriptada antes de ser enviada ao servidor. (As linhas da saída foram quebradas para poder caber numa tela pequena. Isto está indicado pelo símbolo ↵. N.T.)

Veja também

dropuser, CREATE ROLE, createrole_self_grant