因為工作中測試環境和開發環境是分開的,所以開發有時處理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權限