1. 程式人生 > >Oracle 建立只讀使用者

Oracle 建立只讀使用者

場景:資料庫dbtest(服務名)下,建立reader只讀使用者訪問查詢scott普通使用者下的表及資料

這裡先只介紹使用命令操作的一種方法


1. 管理員許可權登陸sqlplus

開啟cmd,登陸方法命令很多,例如:

sqlplus scott/[email protected] as sysdba

或者 sqlplus / as sysdba 之類命令進入sqlplus 
然後conn scott/[email protected] as sysdba

1.1也可以用plsql直接建立使用者

2. 建立一個新使用者  reader,密碼   user

create user reader identified by user;

3. 為reader使用者賦許可權

/** 連線許可權 */
grant connect to reader;
/** 建立同義詞許可權 */
grant create synonym to reader;
/**給使用者賦予只讀許可權*/
grant select_catalog_role,create session to reader;

4. 為reader使用者賦查詢表許可權

  • 為查詢指定表”table”賦權
grant select on scott.table to reader;
  • 為查詢所有表賦權

    下面的sql語句是用來生成批量執行語句的,生成的語句全部執行後即可完成對reader進行所有表查詢許可權的賦權

select 'grant select on '||owner||'.'||object_name||' to reader(新使用者);' 
from dba_objects 
where owner in ('原來的使用者名稱;eg:SCOTT') and object_type='TABLE';

5. 為reader建立同義詞

 前面已經為reader使用者賦了建立同義詞的許可權,可以登陸reader使用者直接建立,當然也可以在管理員使用者下建立;如果不建立同義詞,那麼reader使用者查詢表時,必須使用scott.table1這類的寫法

  • 為指定表”table1”建立同義詞
create or replace synonym reader.table for scott.table;
  • 為所有表建立同義詞

    下面的sql語句是用來生成批量執行語句的,生成的語句全部執行後即可完成對所有表建立同義詞,由於這裡用到管理員許可權才能查詢到的內容,因此執行這個需要管理員許可權

select 'create or replace synonym reader.'||object_name||' for '||owner||'.'||object_name||';' 
from dba_objects 
where owner in ('SCOTT') and object_type='TABLE';

5. 測試reader只讀許可權

接下來就可以使用sql進行reader使用者的操作了