ALTER ROLE — modifica uma função de banco de dados (role)
ALTER ROLEespecificação_da_role[ WITH ]opção[ ... ] ondeopçãopode ser: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMITlimite_de_conexões| [ ENCRYPTED ] PASSWORD 'senha' | PASSWORD NULL | VALID UNTIL 'carimbo_de_tempo' ALTER ROLEnomeRENAME TOnovo_nomeALTER ROLE {especificação_da_role| ALL } [ IN DATABASEnome_do_banco_de_dados] SETparâmetro_de_configuração{ TO | = } {valor| DEFAULT } ALTER ROLE {especificação_da_role| ALL } [ IN DATABASEnome_do_banco_de_dados] SETparâmetro_de_configuraçãoFROM CURRENT ALTER ROLE {especificação_da_role| ALL } [ IN DATABASEnome_do_banco_de_dados] RESETparâmetro_de_configuraçãoALTER ROLE {especificação_da_role| ALL } [ IN DATABASEnome_do_banco_de_dados] RESET ALL ondeespecificação_da_rolepode ser:nome_da_role| CURRENT_ROLE | CURRENT_USER | SESSION_USER
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.
nome #O nome da função de banco de dados cujos atributos devem ser alterados.
CURRENT_ROLECURRENT_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.
SUPERUSERNOSUPERUSERCREATEDBNOCREATEDBCREATEROLENOCREATEROLEINHERITNOINHERITLOGINNOLOGINREPLICATIONNOREPLICATIONBYPASSRLSNOBYPASSRLSCONNECTION LIMIT limite_de_conexõesENCRYPTED ] PASSWORD 'senha'PASSWORD NULLVALID 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çãovalor #
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.
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.
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;
O comando ALTER ROLE é uma extensão do
PostgreSQL.