Oracle - How to create a readonly user

后端 未结 5 1420
滥情空心
滥情空心 2021-01-31 03:32

It\'s possible create a readonly database user at an Oracle Database? How?

5条回答
  •  独厮守ぢ
    2021-01-31 04:22

    A user in an Oracle database only has the privileges you grant. So you can create a read-only user by simply not granting any other privileges.

    When you create a user

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

    the user doesn't even have permission to log in to the database. You can grant that

    GRANT CREATE SESSION to ro_user
    

    and then you can go about granting whatever read privileges you want. For example, if you want RO_USER to be able to query SCHEMA_NAME.TABLE_NAME, you would do something like

    GRANT SELECT ON schema_name.table_name TO ro_user
    

    Generally, you're better off creating a role, however, and granting the object privileges to the role so that you can then grant the role to different users. Something like

    Create the role

    CREATE ROLE ro_role;
    

    Grant the role SELECT access on every table in a particular 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;
    

    And then grant the role to the user

    GRANT ro_role TO ro_user;
    

提交回复
热议问题