ALTER ROLE nome [ [ WITH ] opção [ ... ] ] onde opção pode ser: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT limite_de_conexões | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'senha' | VALID UNTIL 'carimbo_do_tempo' ALTER ROLE nome RENAME TO novo_nome ALTER ROLE nome SET parâmetro_de_configuração { TO | = } { valor | DEFAULT } ALTER ROLE nome RESET parâmetro_de_configuração
O comando ALTER ROLE altera os atributos de um papel do PostgreSQL.
A primeira variante deste comando listada na sinopse permite alterar muitos dos atributos do papel que podem ser especificados em CREATE ROLE, e que deve ser consultado para obter mais informações (São cobertos todos os atributos possíveis, exceto pelo fato de não haver opções para adicionar ou remover membros; para isto deve ser utilizado GRANT e REVOKE). Os atributos não mencionados no comando permanecem com suas definições anteriores. Os superusuários do banco de dados podem alterar qualquer uma destas definições para qualquer papel. Os papéis que possuem o privilégio CREATEROLE podem alterar qualquer uma destas definições, mas somente para os papéis que não são superusuário. Nesta variante os papéis comuns somente podem alterar sua própria senha.
A segunda variante muda o nome do papel. Os superusuários do banco de dados podem mudar o nome de qualquer papel. Os papéis que possuem o privilégio CREATEROLE podem mudar o nome de papéis que não são superusuário. Não pode ser mudado o nome do usuário da sessão corrente (Caso seja necessário, é preciso se conectar como um usuário diferente). Como as senhas criptografadas com MD5 utilizam o nome do papel como sal criptográfico (cryptographic salt) [1] , mudar o nome do papel limpa a sua senha caso esta esteja criptografada com MD5.
A terceira e quarta variantes alteram o valor padrão para a sessão, da variável de configuração do papel especificada. Depois disso, sempre que o papel iniciar uma nova sessão o valor especificado se tornará o valor padrão para a sessão, substituindo qualquer definição presente no arquivo postgresql.conf, ou recebida através da linha de comando do postgres (Para um papel que não possua o privilégio de LOGIN, os valores padrão para a sessão não possuem nenhum efeito). Os papéis comuns podem alterar seus próprios valores padrão para a sessão. Os superusuários podem alterar os valores padrão para a sessão de qualquer um. Os papéis que possuem o privilégio CREATEROLE podem alterar o valor padrão para papéis que não são superusuário. Certas variáveis não podem ser definidas desta maneira, ou somente podem ser definidas quando o comando é utilizado por um superusuário.
O nome do papel cujos atributos estão sendo alterados.
Estas cláusulas alteram os atributos originalmente definidos por CREATE ROLE, que deve ser consultado para obter mais informações.
O novo nome do papel.
Define o valor padrão para a sessão do parâmetro de configuração do papel especificado, como sendo o valor fornecido. Se valor for igual a DEFAULT ou, de forma equivalente, se for utilizado RESET, a definição da variável específica para o papel é removida e, portanto, o papel passará a herdar a definição padrão para todo o sistema nas novas sessões. Deve ser utilizado RESET ALL para limpar todas as definições específicas do papel.
Para obter mais informações sobre os nomes e valores de parâmetros permitidos deve ser consultado SET e o Capítulo 17.
Deve ser utilizado CREATE ROLE para adicionar novos papéis, e DROP ROLE para remover papéis.
O comando ALTER ROLE não pode mudar o status de membro do papel, para isto devem ser utilizados os comandos GRANT e REVOKE.
Deve ser tomado cuidado ao se especificar uma senha não criptografada neste comando. A senha será transmitida para o servidor como texto limpo, também podendo ficar registrada no histórico de comandos do cliente ou no registro do servidor. O psql contém o comando \password que pode ser utilizado para alterar a senha do papel com segurança.
Também é possível associar valor padrão para a sessão para um determinado banco de dados, em vez de para um papel; consulte ALTER DATABASE. As definições específicas do papel substituem as definições específicas do banco de dados, quando há conflito.
Mudar a senha do papel:
ALTER ROLE joana WITH PASSWORD 'hu8jmn3';
Alterar a data de expiração da senha, especificando que a senha deverá expirar ao meio dia de 4 de maio de 2015, utilizando a zona horária uma hora à frente do UTC:
ALTER ROLE cris VALID UNTIL 'May 4 12:00:00 2015 +1';
Tornar a senha válida para sempre:
ALTER ROLE fred VALID UNTIL 'infinity';
Dar ao papel a habilidade de criar outros papéis e novos bancos de dados:
ALTER ROLE miriam CREATEROLE CREATEDB;
Dar ao papel uma definição diferente do padrão para o parâmetro maintenance_work_mem:
ALTER ROLE abelha_operaria SET maintenance_work_mem = 100000;
[1] |
Em criptografia, sal consiste de bits aleatórios usados como uma das entradas para a função de derivação da chave. Salt (cryptography). (N. do T.) |