

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](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>

定義指定的使用者日後所建立的物件要套用的存取許可預設設定。根據預設，使用者只能變更自己擁有的預設存取許可。只有超級使用者能夠指定其他使用者的預設許可。

您可將預設權限套用至角色、使用者或使用者群組。您可為目前資料庫中建立的所有物件，或只為指定的結構描述中建立的物件設定全域的預設許可。

預設許可只會套用至新物件。執行 ALTER DEFAULT PRIVILEGES 並不會變更現有物件的許可。若要授予資料庫或結構描述內任何使用者建立的所有目前和未來物件的許可，請參閱[限定範圍許可](https://docs.aws.amazon.com/redshift/latest/dg/t_scoped-permissions.html)。

若要檢視有關資料庫使用者預設權限的資訊，請查詢 [PG\$1DEFAULT\$1ACL](r_PG_DEFAULT_ACL.md) 系統目錄資料表。

如需權限的相關資訊，請參閱 [GRANT](r_GRANT.md)。

## 所需權限
<a name="r_ALTER_DEFAULT_PRIVILEGES-privileges"></a>

以下是 ALTER DEFAULT PRIVILEGES 所需的權限：
+ 超級使用者
+ 具有 ALTER DEFAULT PRIVILEGES 權限的使用者
+ 變更自身預設存取權限的使用者
+ 為其有權存取的結構描述設定權限的使用者

## 語法
<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 ]
```

## Parameters
<a name="r_ALTER_DEFAULT_PRIVILEGES-parameters"></a>

FOR USER *target\$1user*  <a name="default-for-user"></a>
選用。為其定義預設權限的使用者名稱。只有超級使用者能夠指定其他使用者的預設權限。預設值是目前使用者。

IN SCHEMA *schema\$1name*   <a name="default-in-schema"></a>
選用。如果出現 IN SCHEMA 子句，指定的預設權限就會套用至所指定 *schema\$1name* 中建立的新物件。在此情況下，做為 ALTER DEFAULT PRIVILEGES 目標的使用者或使用者群組必須具備所指定結構描述的 CREATE 權限。結構描述專屬的預設權限會新增至現有的全域預設權限。根據預設，預設權限會全域套用至整個資料庫。

GRANT   <a name="default-grant"></a>
對於指定使用者所建立的所有新資料表和檢視、函數或預存程序，要授予指定使用者或群組的權限集。您可以使用 GRANT 子句設定與使用 [GRANT](r_GRANT.md) 命令時相同的權限和選項。

WITH GRANT OPTION   <a name="default-grant-option"></a>
指出接收權限的使用者可以接著將相同的權限授予他人的子句。您無法將 WITH GRANT OPTION 授予群組或 PUBLIC。

TO *user\$1name* \$1 ROLE *role\$1name* \$1 GROUP *group\$1name*   <a name="default-to"></a>
使用者、角色或使用者群組的名稱，將對其套用指定的預設權限。

REVOKE   <a name="default-revoke"></a>
對於指定使用者所建立的所有新資料表、函數或預存程序，要撤銷指定使用者或群組的權限集。您可以使用 REVOKE 子句設定與使用 [REVOKE](r_REVOKE.md) 命令時相同的權限和選項。

GRANT OPTION FOR  <a name="default-revoke-option"></a>
 這個子句只會撤銷對其他使用者授予指定權限的選項，而不會撤銷權限本身。您無法撤銷群組或 PUBLIC 的 GRANT OPTION。

FROM *user\$1name* \$1 ROLE *role\$1name* \$1 GROUP *group\$1name*  <a name="default-from"></a>
使用者、角色或使用者群組的名稱，預設將撤銷其指定權限。

RESTRICT   <a name="default-restrict"></a>
RESTRICT 選項只會撤銷使用者直接授予的權限。這是預設值。

## 範例
<a name="r_ALTER_DEFAULT_PRIVILEGES-examples"></a>

假設您想要允許使用者群組 `report_readers` 中的任何使用者檢視使用者 `report_admin` 建立的所有資料表和檢視。在此情況下，請以超級使用者身分執行下列命令。

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

在下列範例中，第一個命令會授予您建立的所有新資料表的 SELECT 權限。每當您建立新的檢視時，都必須明確授予檢視權限，或再次重新執行 `alter default privileges` 命令。

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

下列範例會對 `sales_admin` 使用者群組授予您在 `sales` 結構描述中建立的所有新資料表和檢視的 INSERT 權限。

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

以下範例會反轉前述範例中的 ALTER DEFAULT PRIVILEGES 命令。

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

根據預設，PUBLIC 使用者群組具有所有新的使用者定義功能的執行許可。若要撤銷新功能的 `public` 執行許可，然後僅將執行許可授予 `dev_test` 使用者群組，請執行下列命令。

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