createuser — define uma nova conta de usuário do PostgreSQL
createuser [opção_de_conexão...] [opção...] [nome_do_usuário]
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.
A aplicação createuser aceita os seguintes argumentos de linha de comando:
nome_do_usuárioEspecifica 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úmeroDefine o número máximo de conexões para o novo usuário. O padrão é não definir nenhum limite.
-d--createdbO novo usuário terá permissão para criar bancos de dados.
-D--no-createdbO novo usuário não terá permissão para criar bancos de dados. Este é o padrão.
-e--echoMostra os comandos que o createuser gera e envia para o servidor.
-E--encryptedEsta 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--inheritA 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-inheritA 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--loginO 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-loginO 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--pwpromptSe 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-createroleO novo usuário não terá permissão para criar novas funções de banco de dados. Este é o padrão.
-s--superuserO novo usuário será um superusuário.
-S--no-superuserO novo usuário não será um superusuário. Este é o padrão.
-v timestamp--valid-until=timestampDefine 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--versionMostra a versão do createuser, e termina.
--bypassrlsO novo usuário irá ignorar todas as políticas de segurança no nível de linha (RLS).
--no-bypassrlsO 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.
-?--helpMostra 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=hospedeiroEspecifica 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=portaEspecifica 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árioNome 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--passwordForç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.
PGHOSTPGPORTPGUSERParâ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).
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.
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 joeA nova role poderá criar superusuário? (s/n)nA nova role poderá criar bancos de dados? (s/n)nA 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 joeCREATE 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 joeDigite a senha para a nova role:xyzzyDigite-a novamente:xyzzyCREATE 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.)