這兩天遇到了乙個新的需求是從應用系統a訪問應用系統b的資料庫,供開發人員在系統a實現乙個小功能完成某些資料的跨系統比對。目前系統b的資料庫中只有許可權很高的dba使用者,並且已經肩負著與系統c的資料同步任務,因此,從安全和效能兩個監督考慮,都有必要專門建立乙個唯讀使用者供系統a使用。參考網上的資料,自己進行了實踐。
dba_b是系統b的dba使用者,reader_a是要建立的唯讀使用者,sql>表示在sql plus中執行
/** 建立新使用者 **/
sql>create user reader_a identified by readerpwd;
/** 賦予連線許可權 **/
sql>grant connect to reader_a;
sql>grant create session to reader_a;
sql>grant create synonym to reader_a;
/** 賦予讀表許可權 **/
/** 對於dba_b下單張表讀取,一句就足夠 **/
sql>grant select on dba_b.tablename to reader_a;
/** 對於dba_b下多張表讀取,可以先用select轉換批量執行語句,再將結果貼上到sql plus執行。 **/
sql>select 'grant select on '||owner||'.'||object_name||' to reader_a;'
from dba_objects
where owner in ('dba_b') --一定要大寫
and object_type='table';
/** 如果再省事的話,直接賦予對所有表的讀許可權 **/
sql>grant select any table to reader_a;
現在,就可以用新使用者登入資料庫,並且查詢表了,但是查詢dba_b下的表,總是要用dba_b.tablename才行,比較麻煩,所以還可以再做一步同義詞,就可以把dba_b省去了。
/** 建立同義詞 **/
/** 對於dba_b下單張表讀取,一句就足夠 **/
sql>create or replace synonym reader_a.tablename for dba_b.tablename;
/** 對於dba_b下多張表讀取,可以用selece轉換批量執行語句,再將結果貼上到sql plus執行。 **/
sql>select 'create or replace synonym reader_a.'||object_name||' for '||owner||'.'||object_name||';' from dba_objects
where owner in ('dba_b') --一定要大寫
and object_type='table';
sql>select * from tablename測試,返回結果,完成任務。
Oracle資料庫建立唯讀使用者
建立乙個唯讀使用者user2,只能查詢管理員使用者user1下的表,不能增刪改。操作環境 pl sql developer 1 用管理員使用者user1登入,建立使用者user2 並授權 建立使用者user1,密碼123456 create user user2 identified by 1234...
為Mysql資料庫建立唯讀賬戶的操作步驟
確定目的mysql伺服器示例 172.16.0.64 確定唯讀賬號名稱示例 建立審計賬號auditor 確定唯讀賬號密碼示例 生產環境至少8為以上,同時包含大小寫字母和數字,示例dsaf3250 確認資料庫或資料表名示例 允許訪問整個資料庫bookstore db 確定訪問mysql伺服器的ip盡量...
mysql資料庫,建立唯讀使用者
使用現有的root使用者登入到mysql。mysql uroot p 2.建立使用者,並授權select查詢許可權,授權遠端訪問許可權,注意,命令中username password指使用者名稱密碼,請自己指定。若要限制僅指定ip可以使用此使用者訪問mysql,將 改為具ip即可。grant sel...