1. 程式人生 > >Oracle:建立一個只有檢視許可權的使用者

Oracle:建立一個只有檢視許可權的使用者

因為工作中測試環境和開發環境是分開的,所以開發有時處理bug時需要連線測試資料庫,這樣出現一個問題是有些開發會為了驗證某些問題任意改動資料庫的表和欄位,對測試庫造成汙染。為了能夠讓開發連線測試環境,同時又不汙染測試庫,可以給其提供一個只有檢視許可權(視情況開放其他許可權)的使用者

1.首先登陸sys使用者,建立一個賬號,並賦予連線許可權

create user test_cx identified by 11;
grant connect to  test_cx;

2.設定許可權,使其能夠檢視base庫的所有表

登陸base庫,然後執行如下語句,得到針對base庫所有表的授權語句(授權給test_cx使用者)

select 'grant select on base.' || table_name || ' to test_cx;' from user_tables;

3.在base庫中執行查詢得到的授權語句

因為表有上千個,肯定不能一個一個執行,我這裡用了一個比較笨的方法,就是把查詢結果匯出為sql檔案如下

因為每個授權語句都被相同的insert語句包裹,可以通過把多餘的部分替換為空格,只剩下grant語句,然後再執行這個sql檔案就好了

替換後如下

4.執行上述sql檔案即可

5.檢驗

(1)用test_cx賬號登入,檢視其許可權

select
* from session_privs;

(2)查詢base庫的一張表

(3)嘗試修改base庫的表

可以看到test_cx只有select許可權