sql >> Base de Datos >  >> RDS >> Oracle

Oracle:cómo crear un usuario de solo lectura

Un usuario en una base de datos de Oracle solo tiene los privilegios que usted otorga. De modo que puede crear un usuario de solo lectura simplemente sin otorgar ningún otro privilegio.

Cuando creas un usuario

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

el usuario ni siquiera tiene permiso para iniciar sesión en la base de datos. Puedes conceder eso

GRANT CREATE SESSION to ro_user

y luego puede otorgar los privilegios de lectura que desee. Por ejemplo, si desea RO_USER para poder consultar SCHEMA_NAME.TABLE_NAME , harías algo como

GRANT SELECT ON schema_name.table_name TO ro_user

Sin embargo, generalmente es mejor crear un rol y otorgar privilegios de objeto al rol para que luego pueda otorgar el rol a diferentes usuarios. Algo como

Crear el rol

CREATE ROLE ro_role;

Otorgue al rol SELECT acceso en cada tabla en un esquema particular

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;

Y luego otorgue el rol al usuario

GRANT ro_role TO ro_user;