Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle - So erstellen Sie einen schreibgeschützten Benutzer

Ein Benutzer in einer Oracle-Datenbank hat nur die Berechtigungen, die Sie gewähren. Sie können also einen schreibgeschützten Benutzer erstellen, indem Sie einfach keine anderen Berechtigungen gewähren.

Wenn Sie einen Benutzer erstellen

CREATE USER ro_user
 IDENTIFIED BY ro_user
 DEFAULT TABLESPACE users
 TEMPORARY TABLESPACE temp;

Der Benutzer hat nicht einmal die Berechtigung, sich bei der Datenbank anzumelden. Sie können das gewähren

GRANT CREATE SESSION to ro_user

und dann können Sie die gewünschten Leserechte erteilen. Zum Beispiel, wenn Sie RO_USER möchten um SCHEMA_NAME.TABLE_NAME abfragen zu können , würden Sie so etwas tun wie

GRANT SELECT ON schema_name.table_name TO ro_user

Im Allgemeinen ist es jedoch besser, eine Rolle zu erstellen und der Rolle die Objektberechtigungen zuzuweisen, damit Sie die Rolle dann verschiedenen Benutzern zuweisen können. So etwas wie

Erstellen Sie die Rolle

CREATE ROLE ro_role;

Gewähren Sie der Rolle SELECT Zugriff auf jede Tabelle in einem bestimmten Schema

BEGIN
  FOR x IN (SELECT * FROM dba_tables WHERE owner='SCHEMA_NAME')
  LOOP
    EXECUTE IMMEDIATE 'GRANT SELECT ON schema_name.' || x.table_name || 
                                  ' TO ro_role';
  END LOOP;
END;

Weisen Sie dann dem Benutzer die Rolle zu

GRANT ro_role TO ro_user;