sql >> Databasteknik >  >> RDS >> Oracle

Oracle - Hur man skapar en skrivskyddad användare

En användare i en Oracle-databas har bara de privilegier du ger. Så du kan skapa en skrivskyddad användare genom att helt enkelt inte ge några andra privilegier.

När du skapar en användare

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

användaren har inte ens behörighet att logga in i databasen. Du kan bevilja det

GRANT CREATE SESSION to ro_user

och sedan kan du ge dig vilka läsprivilegier du vill. Till exempel, om du vill ha RO_USER för att kunna fråga SCHEMA_NAME.TABLE_NAME , skulle du göra något liknande

GRANT SELECT ON schema_name.table_name TO ro_user

Generellt sett är det dock bättre att du skapar en roll och beviljar objektprivilegier till rollen så att du sedan kan bevilja rollen till olika användare. Något liknande

Skapa rollen

CREATE ROLE ro_role;

Ge rollen SELECT-åtkomst till varje tabell i ett visst 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;

Och ge sedan rollen till användaren

GRANT ro_role TO ro_user;


  1. Hur listar man tillgängliga instanser av SQL-servrar som använder SMO i C#?

  2. SQLite - Ta bort data

  3. Hur ger man position noll för spinner ett promptvärde?

  4. Hur implementerar man en-till-en-, en-till-många- och många-till-många-relationer samtidigt som man designar tabeller?