O utilitário createuser cria um novo usuário do PostgreSQL. Somente os superusuários (usuários com o campo usesuper da tabela pg_shadow definido como verdade) podem criar usuários do PostgreSQL e, portanto, o utilitário createuser deve ser executado por alguém que possa se conectar como superusuário do PostgreSQL.
Ser um superusuário também implica em não estar sujeito às verificações de permissão de acesso do banco de dados e, portanto, a condição de superusuário deve ser concedida criteriosamente.
O createuser é um invólucro em torno do comando CREATE USER do SQL. Não existe diferença efetiva entre criar usuários através deste utilitário, ou através de outros métodos para acessar o servidor.
O createuser aceita os seguintes argumentos de linha de comando:
Especifica o nome do usuário do PostgreSQL a ser criado. O nome deve ser único entre todos os usuários do PostgreSQL.
Permite o novo usuário criar outros usuários (Nota: na verdade isto torna o novo usuário um superusuário. Esta opção possui um nome equivocado).
O novo usuário não pode criar outros usuários (ou seja, o novo usuário é um usuário normal, e não um superusuário). Este é o padrão.
O novo usuário tem permissão para criar bancos de dados.
O novo usuário não tem permissão para criar bancos de dados. Este é o padrão.
Mostra os comandos que o createuser gera e envia para o servidor.
Criptografa a senha do usuário armazenada no banco de dados. Se não for especificado, será utilizado o comportamento padrão para senhas.
Permite escolher uma identificação diferente do padrão para o novo usuário. Não é necessário, mas algumas pessoas gostam.
Não criptografa a senha do usuário armazenada no banco de dados. Se não for especificado, será utilizado o comportamento padrão para senhas.
Se for especificado, o createuser solicitará a senha do novo usuário. Não é necessário caso não se planeje usar autenticação por senha.
Não exibe resposta.
Será solicitado o nome e outras informações que estejam faltando, se não forem especificadas na linha de comando.
O createuser também aceita os seguintes argumentos de linha de comando para os parâmetros de conexão:
Especifica o nome de hospedeiro da máquina onde o servidor está executando. Se o nome iniciar por barra (/), será utilizado como o diretório do soquete do domínio Unix.
Especifica a porta TCP, ou a extensão do arquivo de soquete do domínio Unix local, onde o servidor está atendendo as conexões.
Nome do usuário para conectar (e não o nome do usuário a ser criado).
Força a solicitação da senha (para conectar ao servidor, e não a senha do novo usuário).
Havendo dificuldade, veja no comando CREATE USER e no psql a discussão dos problemas possíveis e as mensagens de erro. O servidor de banco de dados deve estar executando no hospedeiro de destino. Também se aplicam todas as definições de conexão padrão e as variáveis de ambiente utilizadas pela biblioteca cliente libpq.
Para criar o usuário joel no servidor de banco de dados padrão:
$ createuser joel Is the new user allowed to create databases? (y/n) n Shall the new user be allowed to create more new users? (y/n) n CREATE USER
Criar o mesmo usuário joel usando o servidor no hospedeiro eden, porta 5000, evitando solicitação de informação e vendo o comando subjacente:
$ createuser -p 5000 -h eden -D -A -e joel CREATE USER "joel" NOCREATEDB NOCREATEUSER CREATE USER