

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# ALTER DEFAULT PRIVILEGES
<a name="r_ALTER_DEFAULT_PRIVILEGES"></a>

Define o conjunto padrão de permissões de acesso que será aplicado a objetos criados no futuro pelo usuário especificado. Por padrão, os usuários podem alterar somente suas próprias permissões de acesso padrão. Somente um superusuário pode especificar permissões padrão para outros usuários.

Privilégios padrão podem ser aplicados a funções, usuários ou grupos de usuários. É possível definir permissões padrão globalmente para todos os objetos criados no banco de dados atual ou para os objetos criados somente nos esquemas especificados. 

As permissões padrão se aplicam somente a novos objetos. Executar ALTER DEFAULT PRIVILEGES não altera as permissões em objetos existentes. Para conceder permissões em todos os objetos atuais e futuros criados por qualquer usuário em um banco de dados ou esquema, consulte [Scoped permissions](https://docs.aws.amazon.com/redshift/latest/dg/t_scoped-permissions.html). 

Para visualizar informações sobre os privilégios padrão para usuários de bancos de dados, consulte a [PG\_DEFAULT\_ACL](r_PG_DEFAULT_ACL.md) tabela de catálogos do sistema. 

Para obter mais informações sobre privilégios, consulte [GRANT](r_GRANT.md).

## Privilégios obrigatórios
<a name="r_ALTER_DEFAULT_PRIVILEGES-privileges"></a>

A seguir estão os privilégios obrigatórios para ALTER DEFAULT PRIVILEGES:
+ Superusuário
+ Usuários com o privilégio ALTER DEFAULT PRIVILEGES
+ Usuários que alterem seus próprios privilégios de acesso padrão
+ Usuários que definam privilégios para esquemas aos quais eles têm privilégios de acesso

## Sintaxe
<a name="r_ALTER_DEFAULT_PRIVILEGES-synopsis"></a>

```
ALTER DEFAULT PRIVILEGES
    [ FOR USER target_user [, ...] ]
    [ IN SCHEMA schema_name [, ...] ]
    grant_or_revoke_clause

where grant_or_revoke_clause is one of:

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
	ON TABLES
	TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
	ON FUNCTIONS
	TO { user_name [ WITH GRANT OPTION ] |  ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
	ON PROCEDURES
	TO { user_name [ WITH GRANT OPTION ] |  ROLE role_name | GROUP group_name | PUBLIC } [, ...]

REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
	ON TABLES
	FROM user_name [, ...] [ RESTRICT ]

REVOKE  { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
	ON TABLES
	FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]

REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] }
	ON FUNCTIONS
	FROM user_name [, ...] [ RESTRICT ]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
	ON FUNCTIONS
	FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]

REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] }
	ON PROCEDURES
	FROM user_name [, ...] [ RESTRICT ]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
	ON PROCEDURES
	FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]
```

## Parâmetros
<a name="r_ALTER_DEFAULT_PRIVILEGES-parameters"></a>

FOR USER *target\_user*  <a name="default-for-user"></a>
Opcional. Nome do usuário para o qual os privilégios padrão são definidos. Somente os superusuários podem especificar privilégios padrão para outros usuários. O valor padrão é o usuário atual.

IN SCHEMA *schema\_name*   <a name="default-in-schema"></a>
Opcional. Se uma cláusula IN SCHEMA for exibida, os privilégios padrão especificados são aplicados a novos objetos criados com o *schema\_name* especificado. Nesse caso, o usuário ou grupo de usuários de destino do comando ALTER DEFAULT PRIVILEGES deve usar o comando CREATE para criar o privilégio para o esquema especificado. Os privilégios padrão específicos de um esquema são adicionados a privilégios padrão globais existentes. Por padrão, os privilégios padrão são aplicados globalmente ao banco de dados inteiro. 

GRANT   <a name="default-grant"></a>
O conjunto de privilégios a ser concedido a usuários ou grupos especificados para todas as novas tabelas, visualizações, funções ou procedimentos armazenados criados pelo usuário especificado. É possível definir os mesmos privilégios e opções com a cláusula GRANT que você pode definir com o comando [GRANT](r_GRANT.md). 

WITH GRANT OPTION   <a name="default-grant-option"></a>
Cláusula que indica que o usuário que recebe os privilégios por sua vez pode conceder os mesmos privilégios a outros. Você não pode conceder WITH GRANT OPTION a um grupo ou a PUBLIC. 

TO *user\_name* \| ROLE *role\_name* \| GROUP *group\_name*   <a name="default-to"></a>
Nome do usuário, da função ou do grupo de usuários ao qual os privilégios padrão especificados são aplicados.

REVOKE   <a name="default-revoke"></a>
Conjunto de privilégios a serem revogados dos usuários ou grupos especificados para todas as novas tabelas, funções ou procedimentos armazenados criados pelo usuário especificado. É possível definir os mesmos privilégios e opções com a cláusula REVOKE que você pode definir com o comando [REVOKE](r_REVOKE.md). 

GRANT OPTION FOR  <a name="default-revoke-option"></a>
 Cláusula que revoga somente a opção de conceder um privilégio especificado a outros usuários e não revoga o próprio privilégio. Não é possível revogar GRANT OPTION de um grupo ou de PUBLIC. 

FROM *user\_name* \| ROLE *role\_name* \| GROUP *group\_name*  <a name="default-from"></a>
O nome do usuário, da função ou do grupo de usuários do qual os privilégios especificados são revogados por padrão.

RESTRICT   <a name="default-restrict"></a>
A opção RESTRICT revoga somente os privilégios que o usuário concedeu diretamente. Esse é o padrão.

## Exemplos
<a name="r_ALTER_DEFAULT_PRIVILEGES-examples"></a>

Digamos que você deseja permitir que qualquer usuário do grupo `report_readers` visualize todas as tabelas e visualizações criadas pelo usuário `report_admin`. Nesse caso, execute o comando a seguir como superusuário. 

```
alter default privileges for user report_admin grant select on tables to group report_readers; 
```

No exemplo a seguir, o primeiro comando concede o privilégio SELECT a todas as novas tabelas que você criar. Sempre que criar uma visão, você deverá conceder explicitamente privilégios à visão ou executar novamente o comando `alter default privileges`.

```
alter default privileges grant select on tables to public; 
```

O exemplo a seguir concede o privilégio INSERT ao grupo de usuários `sales_admin` para todas as novas tabelas e exibições que você criar no esquema `sales`. 

```
alter default privileges in schema sales grant insert on tables to group sales_admin; 
```

O exemplo a seguir inverte o comando ALTER DEFAULT PRIVILEGES do exemplo anterior. 

```
alter default privileges in schema sales revoke insert on tables from group sales_admin;
```

Por padrão, o grupo de usuários PUBLIC tem permissão de execução para todas as novas funções definidas por usuário. Para revogar permissões de execução `public` para suas novas funções e depois conceder a permissão de execução somente para o grupo de usuários `dev_test`, execute os comandos a seguir. 

```
alter default privileges revoke execute on functions from public;
alter default privileges grant execute on functions to group dev_test;
```