Oracle 建立只讀使用者
阿新 • • 發佈:2018-11-08
場景:資料庫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使用者的操作了