

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Beispiele
<a name="r_GRANT-examples"></a>

 Im folgenden Beispiel erhält der Benutzer das SELECT-Recht für die Tabelle SALES `fred`. 

```
grant select on table sales to fred;
```

Im folgenden Beispiel erhält der Benutzer das SELECT-Recht für alle Tabellen im Schema QA\_TICKIT `fred`. 

```
grant select on all tables in schema qa_tickit to fred;
```

Im folgenden Beispiel erhält die Benutzergruppe QA\_USERS alle Schemarechte für das Schema QA\_TICKIT. Die Schemarechte sind CREATE und USAGE. USAGE gewährt Benutzern den Zugriff auf die Objekte im Schema, jedoch keine Rechte wie INSERT oder SELECT für diese Objekte. Gewähren Sie für jedes Objekt separat Berechtigungen.

```
create group qa_users;
grant all on schema qa_tickit to group qa_users;
```

Im folgenden Beispiel erhalten alle Benutzer in der Gruppe QA\_USERS alle Rechte für die Tabelle SALES im Schema QA\_TICKIT.

```
grant all on table qa_tickit.sales to group qa_users;
```

Im folgenden Beispiel erhalten alle Benutzer in den Gruppen QA\_USERS und RO\_USERS alle Berechtigungen für die Tabelle SALES im Schema QA\_TICKIT.

```
grant all on table qa_tickit.sales to group qa_users, group ro_users;
```

Im folgenden Beispiel erhalten alle Benutzer in der Gruppe QA\_USERS die DROP-Berechtigung für die Tabelle SALES im Schema QA\_TICKIT.

```
grant drop on table qa_tickit.sales to group qa_users;>
```

Die folgende Abfolge von Befehlen zeigt, dass der Zugriff auf ein Schema keine Rechte in Bezug auf eine Tabelle im Schema gewährt. 

```
create user schema_user in group qa_users password 'Abcd1234';
create schema qa_tickit;
create table qa_tickit.test (col1 int);
grant all on schema qa_tickit to schema_user;

set session authorization schema_user;
select current_user;


current_user
--------------
schema_user
(1 row)


select count(*) from qa_tickit.test;


ERROR: permission denied for relation test [SQL State=42501]


set session authorization dw_user;
grant select on table qa_tickit.test to schema_user;
set session authorization schema_user;
select count(*) from qa_tickit.test;


count
-------
0
(1 row)
```

Die folgende Abfolge von Befehlen zeigt, dass der Zugriff auf eine Ansicht keinen Zugriff auf die zugrunde liegenden Tabellen impliziert. Der Benutzer namens VIEW\_USER kann nicht aus der Tabelle DATE auswählen, obwohl diesem Benutzer alle Rechte in Bezug auf VIEW\_DATE gewährt wurden. 

```
create user view_user password 'Abcd1234';
create view view_date as select * from date;
grant all on view_date to view_user;
set session authorization view_user;
select current_user;


current_user
--------------
view_user
(1 row)


select count(*) from view_date;


count
-------
365
(1 row)


select count(*) from date;


ERROR:  permission denied for relation date
```

Im folgenden Beispiel wird dem Benutzer `cust_name` die SELECT-Berechtigung für die Spalten `cust_phone` und `cust_profile` der Tabelle `user1` gewährt. 

```
grant select(cust_name, cust_phone) on cust_profile to user1;
```

Im folgenden Beispiel wird der Gruppe `cust_name` die SELECT-Berechtigung für die Spalten `cust_phone` und `cust_contact_preference` und die UPDATE-Berechtigung für die Spalte `cust_profile` der Tabelle `sales_group` gewährt. 

```
grant select(cust_name, cust_phone), update(cust_contact_preference) on cust_profile to group sales_group;
```

Das folgende Beispiel zeigt die Verwendung des Schlüsselworts ALL, um der Gruppe `cust_profile` sowohl SELECT- als auch UPDATE-Berechtigungen für drei Spalten der Tabelle `sales_admin` zu erteilen. 

```
grant ALL(cust_name, cust_phone,cust_contact_preference) on cust_profile to group sales_admin;
```

Im folgenden Beispiel wird dem Benutzer `cust_name` die SELECT-Berechtigung für die Spalte `cust_profile_vw` der Ansicht `user2` gewährt. 

```
grant select(cust_name) on cust_profile_vw to user2;
```

## Beispiele für die Gewährung von Zugriff auf Datashares
<a name="r_GRANT-examples-datashare"></a>

Im Folgenden finden Sie Beispiele für die GRANT-Datashare-Nutzungsberechtigungen für eine bestimmte Datenbank oder ein bestimmtes Schema, die auf einem Datashare erstellt wurden. 

Im folgenden Beispiel erteilt ein Administrator auf Produzentenseite dem angegebenen Namespace die USAGE-Berechtigung für den `salesshare`-Datashare. 

```
GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

Im folgenden Beispiel erteilt ein konsumentenseitiger Administrator die USAGE-Berechtigung auf `sales_db` für `Bob`.

```
GRANT USAGE ON DATABASE sales_db TO Bob;
```

Im folgenden Beispiel erteilt ein konsumentenseitiger Administrator der `Analyst_role`-Rolle die GRANT USAGE-Berechtigung für das `sales_schema`-Schema. `sales_schema` ist ein externes Schema, das auf sales\_db verweist.

```
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
```

Zu diesem Zeitpunkt können `Bob` und `Analyst_role` auf alle Datenbankobjekte in `sales_schema` und `sales_db` zugreifen.

Das folgende Beispiel zeigt, wie zusätzliche Berechtigungen auf Objektebene für Objekte in einer gemeinsam genutzten Datenbank erteilt werden. Diese zusätzlichen Berechtigungen sind nur erforderlich, wenn der Befehl CREATE DATABASE, mit dem die gemeinsam genutzte Datenbank erstellt wurde, die WITH PERMISSIONS-Klausel verwendet hat. Wenn der Befehl CREATE DATABASE die Klausel WITH PERMISSIONS nicht verwendet hat, beinhaltet die Gewährung der USAGE-Berechtigung für die gemeinsam genutzte Datenbank vollen Zugriff auf alle Objekte in dieser Datenbank.

```
GRANT SELECT ON sales_db.sales_schema.tickit_sales_redshift to Bob;
```

## Beispiele für die Gewährung von bereichsbezogenen Berechtigungen
<a name="r_GRANT-examples-scoped"></a>

Im folgenden Beispiel wird der `Sales`-Rolle die Verwendung aller derzeitigen und zukünftigen Schemata in der `Sales_db`-Datenbank gestattet.

```
GRANT USAGE FOR SCHEMAS IN DATABASE Sales_db TO ROLE Sales;
```

Im folgenden Beispiel wird dem Benutzer `alice` die SELECT-Berechtigung für alle derzeitigen und zukünftigen Tabellen in der `Sales_db`-Datenbank sowie `alice` die Berechtigung erteilt, anderen Benutzern bereichsbezogene Berechtigungen für Tabellen in `Sales_db` zu gewähren.

```
GRANT SELECT FOR TABLES IN DATABASE Sales_db TO alice WITH GRANT OPTION;
```

Im folgenden Beispiel wird dem Benutzer `bob` die EXECUTE-Berechtigung für Funktionen im `Sales_schema`-Schema gewährt.

```
GRANT EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema TO bob;
```

Im folgenden Beispiel werden der `Sales`-Rolle alle Berechtigungen für alle Tabellen im Schema `ShareSchema` der Datenbank `ShareDb` gewährt. Bei der Angabe des Schemas können Sie die Datenbank des Schemas im zweiteiligen Format `database.schema` angeben.

```
GRANT ALL FOR TABLES IN SCHEMA ShareDb.ShareSchema TO ROLE Sales;
```

Das folgende Beispiel zeigt dieselbe Abfrage wie im vorherigen Beispiel. Sie können die Datenbank mit dem `DATABASE`-Schlüsselwort angeben, anstatt ein zweiteiliges Format zu verwenden.

```
GRANT ALL FOR TABLES IN SCHEMA ShareSchema DATABASE ShareDb TO ROLE Sales;
```

## Beispiele für die Erteilung der ASSUMEROLE-Berechtigung
<a name="r_GRANT-examples-assumerole"></a>

Im Folgenden finden Sie Beispiele für die Erteilung der ASSUMEROLE-Berechtigung.

Das folgende Beispiel zeigt die REVOKE-Anweisung, die ein Superuser einmal auf dem Cluster ausführt, um die Verwendung der ASSUMEROLE-Berechtigung für Benutzer und Gruppen zu ermöglichen. Anschließend erteilt der Superuser Benutzern und Gruppen die Berechtigung ASSUMEROLE für die entsprechenden Befehle. Informationen zum Aktivieren der Verwendung der ASSUMEROLE-Berechtigung für Benutzer und Gruppen finden Sie unter [Hinweise zur Erteilung der Berechtigung ASSUMEROLE](r_GRANT-usage-notes.md#r_GRANT-usage-notes-assumerole).

```
revoke assumerole on all from public for all;
```

Im folgenden Beispiel erhält der Benutzer `reg_user1` die ASSUMEROLE-Berechtigung für die IAM-Rolle `Redshift-S3-Read`, um COPY-Vorgänge auszuführen. 

```
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-S3-Read'
to reg_user1 for copy;
```

Im folgenden Beispiel erhält der Benutzer `reg_user1` die ASSUMEROLE-Berechtigung für die IAM-Rollenkette `RoleA`, `RoleB`, um UNLOAD-Vorgänge auszuführen. 

```
grant assumerole
on 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB'
to reg_user1
for unload;
```

Im Folgenden finden Sie ein Beispiel für den Befehl UNLOAD unter Verwendung der IAM-Rollenkette `RoleA`, `RoleB`.

```
unload ('select * from venue limit 10')
to 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Im folgenden Beispiel erhält der Benutzer `reg_user1` die ASSUMEROLE-Berechtigung für die IAM-Rolle `Redshift-Exfunc`, um externe Funktionen auszuführen. 

```
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-Exfunc'
to reg_user1 for external function;
```

Im folgenden Beispiel erhält der Benutzer `reg_user1` die ASSUMEROLE-Berechtigung für die IAM-Rolle `Redshift-model`, um Machine-Learning-Modelle zu erstellen. 

```
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-ML'
to reg_user1 for create model;
```

## Beispiele für die Erteilung der ROLE-Berechtigung
<a name="r_GRANT-examples-role"></a>

Im folgenden Beispiel wird die Rolle sample\_role1 einem Benutzer mit dem Namen user1 erteilt.

```
CREATE ROLE sample_role1;
GRANT ROLE sample_role1 TO user1;
```

Im folgenden Beispiel wird dem Benutzer user1 die Rolle sample\_role1 mit WITH ADMIN OPTION gewährt, die aktuelle Sitzung für user1 festgelegt und user1 gewährt die Rolle sample\_role1 für user2.

```
GRANT ROLE sample_role1 TO user1 WITH ADMIN OPTION;
SET SESSION AUTHORIZATION user1;
GRANT ROLE sample_role1 TO user2;
```

Im folgenden Beispiel wird die Rolle sample\_role1 der Rolle sample\_role2 gewährt.

```
GRANT ROLE sample_role1 TO ROLE sample_role2;
```

Im folgenden Beispiel wird die Rolle sample\_role2 für sample\_role3 und sample\_role4 gewährt. Dann wird versucht, sample\_role3 für sample\_role1 zu gewähren.

```
GRANT ROLE sample_role2 TO ROLE sample_role3;
GRANT ROLE sample_role3 TO ROLE sample_role2;
ERROR: cannot grant this role, a circular dependency was detected between these roles
```

Im folgenden Beispiel werden die CREATE USER-Systemberechtigungen für sample\_role1 gewährt.

```
GRANT CREATE USER TO ROLE sample_role1;
```

Im folgenden Beispiel wird die vom System definierte Rolle `sys:dba` für user1 gewährt.

```
GRANT ROLE sys:dba TO user1;
```

Im folgenden Beispiel wird versucht, sample\_role3 in einer kreisförmigen Abhängigkeit von sample\_role2 zu gewähren.

```
CREATE ROLE sample_role3;
GRANT ROLE sample_role2 TO ROLE sample_role3;
GRANT ROLE sample_role3 TO ROLE sample_role2; -- fail
ERROR:  cannot grant this role, a circular dependency was detected between these roles
```