

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 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/)。

# 组
<a name="r_Groups"></a>

组是一些用户的集合，这些用户全部被授予与组关联的所有权限。您可以使用组分配权限。例如，您可以为销售、管理和支持创建不同的组，并向每组中的用户授予对其工作所需数据的适当访问权限。您可以在组级别授予或撤消权限，而这些更改将应用于组的所有成员，但超级用户除外。

要查看所有用户组，请查询 PG\$1GROUP 系统目录表：

```
select * from pg_group;
```

例如，要按组列出所有数据库用户，请运行以下 SQL。

```
SELECT u.usesysid
,g.groname
,u.usename
FROM pg_user u
LEFT JOIN pg_group g ON u.usesysid = ANY (g.grolist)
```

# 创建、修改和删除组
<a name="r_Groups-creating-altering-and-deleting-groups"></a>

只有超级用户才能创建、修改或删除组。

您可以执行以下操作：
+ 要创建组，请使用 [CREATE GROUP](r_CREATE_GROUP.md) 命令。
+ 要在现有组中添加或删除用户，请使用 [ALTER GROUP](r_ALTER_GROUP.md) 命令。
+ 要删除组，请使用 [DROP GROUP](r_DROP_GROUP.md) 命令。此命令仅删除组，而不删除组成员用户。

# 控制用户和组访问的示例
<a name="t_user_group_examples"></a>

此示例创建了用户组和用户，然后向其授予对连接到 Web 应用程序客户端的 Amazon Redshift 数据库的各种权限。此示例假设三组用户：Web 应用程序的常规用户、Web 应用程序的超级用户和 Web 开发人员。

有关如何从组中移除用户的信息，请参阅 [ALTER GROUP](r_ALTER_GROUP.md)。

1. 创建将在其中分配用户的组。下面一组命令创建三个不同的用户组：

   ```
   create group webappusers;
   
   create group webpowerusers;
   
   create group webdevusers;
   ```

1.  创建多个具有不同权限的数据库用户并将其添加到组。

   1.  创建两个用户并将其添加到 WEBAPPUSERS 组：

      ```
      create user webappuser1 password 'webAppuser1pass'
      in group webappusers;
      
      create user webappuser2 password 'webAppuser2pass'
      in group webappusers;
      ```

   1.  创建 Web 开发人员用户并将其添加到 WEBDEVUSERS 组：

      ```
      create user webdevuser1 password 'webDevuser2pass'
      in group webdevusers;
      ```

   1.  创建超级用户。此用户将具有管理权限，可以创建其他用户：

      ```
      create user webappadmin  password 'webAppadminpass1'
      createuser;
      ```

1.  创建要与 Web 应用程序所使用的数据库表关联的 schema，并授予对此 schema 的各种用户组访问权限：

   1.  创建 WEBAPP schema：

      ```
      create schema webapp;
      ```

   1.  向 WEBAPPUSERS 组授予 USAGE 权限：

      ```
      grant usage on schema webapp to group webappusers;
      ```

   1.  向 WEBPOWERUSERS 组授予 USAGE 权限：

      ```
      grant usage on schema webapp to group webpowerusers;
      ```

   1.  向 WEBDEVUSERS 组授予 ALL 权限：

      ```
      grant all on schema webapp to group webdevusers;
      ```

   基本用户和组现已设置。您现在可以修改用户和组。

1.  例如，以下命令会修改 WEBAPPUSER1 的 search\$1path 参数。

   ```
   alter user webappuser1 set search_path to webapp, public;
   ```

   SEARCH\$1PATH 指定在通过未指定 schema 的简单名称引用数据库对象（例如，表和函数）时，对象的 schema 搜索顺序。

1.  您还可以在创建组之后向组中添加用户，例如，将 WEBAPPUSER2 添加到 WEBPOWERUSERS 组：

   ```
   alter group webpowerusers add user webappuser2;
   ```