ALTER ROLE

ALTER ROLE — modifica uma função de banco de dados (role)

Sinopse

ALTER ROLE especificação_da_role [ WITH ] opção [ ... ]

onde opção pode ser:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT limite_de_conexões
    | [ ENCRYPTED ] PASSWORD 'senha' | PASSWORD NULL
    | VALID UNTIL 'carimbo_de_tempo'

ALTER ROLE nome RENAME TO novo_nome

ALTER ROLE { especificação_da_role | ALL }
    [ IN DATABASE nome_do_banco_de_dados ]​
    SET parâmetro_de_configuração { TO | = } { valor | DEFAULT }
ALTER ROLE { especificação_da_role | ALL }
    [ IN DATABASE nome_do_banco_de_dados ]​
    SET parâmetro_de_configuração FROM CURRENT
ALTER ROLE { especificação_da_role | ALL }
    [ IN DATABASE nome_do_banco_de_dados ]​
    RESET parâmetro_de_configuração
ALTER ROLE { especificação_da_role | ALL }
    [ IN DATABASE nome_do_banco_de_dados ]​
    RESET ALL

onde especificação_da_role pode ser:

    nome_da_role
  | CURRENT_ROLE
  | CURRENT_USER
  | SESSION_USER

Descrição

O comando ALTER ROLE altera os atributos de uma função de banco de dados (role) do PostgreSQL.

A primeira variante desse comando listada na sinopse permite alterar muitos dos atributos da função de banco de dados que podem ser especificados no comando CREATE ROLE. (Todos os atributos possíveis são abrangidos, exceto por não haver opções para adicionar ou remover membros de grupos; devem ser usados os comandos GRANT e REVOKE para isto.) Os atributos não mencionados no comando mantêm suas definições anteriores. Os superusuários do banco de dados podem alterar qualquer uma destas configurações para qualquer função de banco de dados (role), exceto a propriedade SUPERUSER para o superusuário de inicialização. As funções de banco de dados que não sejam de superusuário e que tenham recebido o privilégio CREATEROLE podem modificar a maioria destas propriedades, mas apenas para funções de banco de dados que não sejam de superusuário ou de replicação, e para as quais tenham recebido o privilégio ADMIN OPTION. Os usuários que não sejam superusuários não podem alterar a propriedade SUPERUSER e podem modificar as propriedades CREATEDB, REPLICATION e BYPASSRLS somente se eles próprios possuírem a propriedade correspondente. Os usuários com funções de banco de dados comuns só podem alterar a própria senha.

A segunda variante permite alterar o nome da função de banco de dados. Os superusuários do banco de dados podem alterar o nome de qualquer função de banco de dados. Funções de banco de dados com o privilégio CREATEROLE podem alterar o nome de funções de banco de dados que não são superusuários para as quais tenham recebido o privilégio ADMIN OPTION. O usuário da sessão corrente não pode ter o nome alterado. (Deve-se conectar como um usuário diferente se precisar fazer isto.) Como as senhas encriptadas com MD5 usam o nome da função de banco de dados como sal criptográfico, alterar o nome da função de banco de dados limpa sua senha, se esta estiver encriptada com MD5.

As demais variantes alteram o valor padrão de uma variável de configuração de sessão para uma função de banco de dados, seja para todos os bancos de dados ou, quando é especificada a cláusula IN DATABASE, apenas para sessões no banco de dados indicado. Se for especificado ALL em vez do nome de função de banco de dados, isto irá alterar a configuração para todas as funções de banco de dados. Usar ALL com IN DATABASE é efetivamente o mesmo que usar o comando ALTER DATABASE ... SET ....

Sempre que a função de banco de dados iniciar uma nova sessão, o valor especificado se tornará o padrão da sessão, substituindo qualquer configuração presente no arquivo postgresql.conf ou recebida da linha de comando do postgres. Isto só acontece no momento da conexão (login); executar SET ROLE ou SET SESSION AUTHORIZATION não causa a definição de novos valores de configuração. As configurações definidas para todos os bancos de dados são substituídas pelas configurações específicas do banco de dados associadas a uma função de banco de dados. As configurações para bancos de dados específicos ou para funções de banco de dados específicas substituem as configurações para todas as funções de banco de dados.

Os superusuários podem alterar os valores padrão de sessão de qualquer função de banco de dados. As funções de banco de dados com o privilégio CREATEROLE podem modificar os valores padrão para as funções de banco de dados não superusuárias para as quais possuem o privilégio ADMIN OPTION. As funções de banco de dados comuns só podem definir valores padrão para si mesmas. Certas variáveis de configuração não podem ser definidas desta maneira, ou só podem ser definidas se o comando for executado por um superusuário. Somente superusuários podem alterar uma configuração para todas as funções de banco de dados em todos os bancos de dados.

Parâmetros

nome #

O nome da função de banco de dados cujos atributos devem ser alterados.

CURRENT_ROLE
CURRENT_USER #

Altera o usuário corrente, em vez da função de banco de dados identificada explicitamente.

SESSION_USER #

Altera o usuário da sessão corrente, em vez da função de banco de dados identificada explicitamente.

SUPERUSER
NOSUPERUSER
CREATEDB
NOCREATEDB
CREATEROLE
NOCREATEROLE
INHERIT
NOINHERIT
LOGIN
NOLOGIN
REPLICATION
NOREPLICATION
BYPASSRLS
NOBYPASSRLS
CONNECTION LIMIT limite_de_conexões
[ ENCRYPTED ] PASSWORD 'senha'
PASSWORD NULL
VALID UNTIL 'carimbo_de_tempo' #

Estas cláusulas alteram atributos originalmente definidos pelo comando CREATE ROLE. Para obter mais informações, consulte a página de referência do comando CREATE ROLE.

novo_nome #

O novo nome da função de banco de dados.

nome_do_banco_de_dados #

O nome do banco de dados no qual a variável de configuração deve ser definida.

parâmetro_de_configuração
valor #

Define o valor padrão da sessão dessa função de banco de dados, para o parâmetro de configuração especificado, como o valor fornecido. Se o valor for DEFAULT, ou de forma equivalente for usado RESET, a configuração específica da função banco de dados será removida, portanto, herdará a configuração padrão de todo o sistema nas novas sessões. Deve ser usado RESET ALL para limpar todas as configurações específicas das funções de banco de dados. A cláusula SET FROM CURRENT salva o valor corrente do parâmetro na sessão, como o valor específico da função banco de dados. Se for especificado IN DATABASE, o parâmetro de configuração será definido ou removido apenas para a função de banco de dados e banco de dados especificados.

As configurações de variáveis específicas da função de banco de dados entram em vigor apenas no momento da conexão; os comandos SET ROLE e SET SESSION AUTHORIZATION não processam as configurações de variáveis específicas da função de banco de dados.

Veja SET e Configuração do servidor para obter mais informações sobre nomes e valores de parâmetros permitidos.

Notas

Deve ser usado CREATE ROLE para adicionar funções de banco de dados, e DROP ROLE para removê-las.

O comando ALTER ROLE não pode alterar ser membro de uma função de banco de dados. Devem ser usados os comandos GRANT e REVOKE para isto.

Deve-se ter cuidado ao especificar uma senha não encriptada com este comando. A senha será transmitida ao servidor em texto não encriptado, e também poderá ser registrada no histórico de comandos do cliente, ou no registro do servidor. Além disso, o psql contém o meta-comando \password que pode ser usado para alterar a senha sem expô-la.

Também é possível vincular um valor padrão de sessão a um banco de dados específico, em vez de uma função de banco de dados; veja ALTER DATABASE. Havendo conflito, as configurações específicas da função de banco de dados do banco de dados prevalecem sobre as específicas da função de banco de dados, que por sua vez prevalecem sobre as específicas do banco de dados.

Exemplos

Alterar a senha da função de banco de dados (role):

ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

Remover a senha da função de banco de dados:

ALTER ROLE davide WITH PASSWORD NULL;

Alterar a data de expiração da senha, especificando que a senha deve expirar ao meio-dia de 4 de maio de 2025, usando o fuso horário que é uma hora após UTC:

ALTER ROLE chris VALID UNTIL 'May 4 12:00:00 2025 +1';

Tornar a senha válida para sempre:

ALTER ROLE fred VALID UNTIL 'infinity';

Conceder à função de banco de dados o privilégio de gerenciar outras funções de banco de dados e criar novos bancos de dados:

ALTER ROLE miriam CREATEROLE CREATEDB;

Dar à função de banco de dados uma configuração do parâmetro maintenance_work_mem diferente da configuração padrão:

ALTER ROLE worker_bee SET maintenance_work_mem = 100000;

Dar à função de banco de dados uma configuração do parâmetro client_min_messages, específica do banco de dados, diferente da configuração padrão:

ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;

Conformidade

O comando ALTER ROLE é uma extensão do PostgreSQL.

Veja também

CREATE ROLE, DROP ROLE, ALTER DATABASE, SET