O utilitário createuser cria um novo usuário do PostgreSQL (ou mais precisamente, um papel). Somente os superusuários e os usuários com o privilégio CREATEROLE podem criar novos usuários e, portanto, 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 um novo superusuário a conexão deverá ser feita por um superusuário, e não simplesmente por usuário comum com o privilégio CREATEROLE. Ser um superusuário 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 ROLE 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 diferente de todos os papéis existentes nesta instalação do PostgreSQL.
O novo usuário é um superusuário.
O novo usuário 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.
O novo usuário tem permissão para criar novos papéis (ou seja, este usuário possui o privilégio CREATEROLE).
O novo usuário não tem permissão para criar novos papéis. Este é o padrão.
O novo usuário tem permissão para conectar (ou seja, este nome de usuário pode ser utilizado como identificador do usuário inicial da sessão). Este é o padrão.
O novo usuário não tem permissão para conectar (um papel sem o privilégio LOGIN ainda é útil como forma de gerenciar permissões do banco de dados).
O novo papel herda, automaticamente, os privilégios dos papéis dos quais é membro. Este é o padrão.
O novo papel não herda automaticamente os privilégios dos papéis dos quais é membro.
Define o número máximo de conexões para o novo usuário. O padrão é definir como sem limite.
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.
Criptografa a senha do usuário armazenada no banco de dados. Se não for especificado, será utilizado o comportamento padrão para senhas.
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.
Mostra os comandos que o createuser gera e envia para o servidor.
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 ROLE 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 O novo papel será um superusuário? (s/n) n O novo papel poderá criar bancos de dados? (s/n) n O novo papel poderá criar novos papéis? (s/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 -h eden -p 5000 -S -D -R -e joel CREATE ROLE joel NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN; CREATE ROLE
Criar o usuário joel como um superusuário e atribuir uma senha criptografada imediatamente:
$ createuser -P -s -E -e joel Digite a senha do novo papel: xyzzy Digite novamente: xyzzy CREATE ROLE joel PASSWORD 'md58c5635dc3b41432cacfbb67c661a0e36' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN; CREATE ROLE
Criar o usuário joel como um superusuário e atribuir uma senha não criptografada imediatamente:
$ createuser -P -s -N -e joel Digite a senha do novo papel: xyzzy Digite novamente: xyzzy CREATE ROLE joel PASSWORD 'xyzzy' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN; CREATE ROLE
Nos dois exemplos acima a nova senha não é realmente mostrada ao ser digitada, mas está mostrado o que foi digitado para ficar mais claro. Entretanto, a senha aparecerá no comando mostrado, conforme está ilustrado — portanto, não será desejado utilizar a opção -e ao atribuir uma senha não criptografada quando outra pessoa puder ver a tela. [1]
[1] |
No manual original só é mostrado o caso da senha não criptografada. Nesta tradução foi adicionado o caso da senha criptografada para ficar mais claro. (N. do T.) |