可以在Oracle數據庫中創建只讀數據庫用戶? 如何?Oracle - 如何創建只讀用戶
20
A
回答
40
Oracle數據庫中的用戶只擁有您授予的權限。所以你可以通過不授予任何其他特權來創建一個只讀用戶。
當你創建一個用戶
CREATE USER ro_user
IDENTIFIED BY ro_user
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
用戶甚至不必登錄到數據庫的權限。你可以授予,
GRANT CREATE SESSION to ro_user
然後你可以去授予你想要的任何閱讀權限。例如,如果你想RO_USER
能夠查詢SCHEMA_NAME.TABLE_NAME
,你會做這樣的事情
GRANT SELECT ON schema_name.table_name TO ro_user
一般情況下,最好創建一個角色,然而,授予對象權限的作用,使你然後可以將角色授予不同的用戶。像
東西創建角色
CREATE ROLE ro_role;
授予對每個表選擇角色的訪問在特定模式
BEGIN
FOR x IN (SELECT * FROM dba_tables WHERE owner='SCHEMA_NAME')
LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON schema_name.' || x.table_name ||
' TO ro_role';
END LOOP;
END;
然後授予角色給用戶
GRANT ro_role TO ro_user;
8
create user ro_role identified by ro_role;
grant create session, select any table, select any dictionary to ro_role;
-1
它是n由於每個用戶通過公開自動獲得的許多公共執行,所以在默認數據庫中絕對是可能的。
1
以用戶系統爲例,執行以下步驟。
將p_owner設置爲架構所有者,將p_readonly設置爲只讀用戶的名稱。
create or replace
procedure createReadOnlyUser(p_owner in varchar2, p_readonly in varchar2)
AUTHID CURRENT_USER is
BEGIN
execute immediate 'create user '||p_readonly||' identified by '||p_readonly;
execute immediate 'grant create session to '||p_readonly;
execute immediate 'grant select any dictionary to '||p_readonly;
execute immediate 'grant create synonym to '||p_readonly;
FOR R IN (SELECT owner, object_name from all_objects where object_type in('TABLE', 'VIEW') and owner=p_owner) LOOP
execute immediate 'grant select on '||p_owner||'.'||R.object_name||' to '||p_readonly;
END LOOP;
FOR R IN (SELECT owner, object_name from all_objects where object_type in('FUNCTION', 'PROCEDURE') and owner=p_owner) LOOP
execute immediate 'grant execute on '||p_owner||'.'||R.object_name||' to '||p_readonly;
END LOOP;
FOR R IN (SELECT owner, object_name FROM all_objects WHERE object_type in('TABLE', 'VIEW') and owner=p_owner) LOOP
EXECUTE IMMEDIATE 'create synonym '||p_readonly||'.'||R.object_name||' for '||R.owner||'."'||R.object_name||'"';
END LOOP;
FOR R IN (SELECT owner, object_name from all_objects where object_type in('FUNCTION', 'PROCEDURE') and owner=p_owner) LOOP
execute immediate 'create synonym '||p_readonly||'.'||R.object_name||' for '||R.owner||'."'||R.object_name||'"';
END LOOP;
END;
0
您可以創建用戶並授予特權
創建用戶通過READ_ONLY READ_ONLY鑑定; 授予創建會話,選擇任何表來read_only;
相關問題
- 1. Oracle - 如何使用oracle varialbe創建oracle用戶?
- 2. 如何從Oracle創建OracleMembershipProvider用戶?
- 3. 如何在Oracle 10g中創建用戶
- 4. 如何在SharePoint中創建新用戶(訪問者 - 只讀)?
- 5. 如何在PostgreSQL中創建一個只讀用戶?
- 6. Oracle Apex用戶創建
- 7. 如何創建使用Oracle
- 8. 如何創建只讀屬性
- 9. 如何創建只讀複選框MVC?
- 10. 如何創建只讀領域對象?
- 11. 如何創建只讀註冊表項?
- 12. 如何創建只讀實體?
- 13. 如何創建非只讀文件夾
- 14. 如何在itext7中創建只讀PDF
- 15. 如何在python中爲ElasticSearch創建一個只讀客戶端?
- 16. 創建只能看到過程標題的Oracle用戶
- 17. 如何創建一個只在Oracle所有的用戶讀取和寫入權限的表?
- 18. 只讀能夠創建表
- 19. NSFileManager - 創建只讀文件
- 20. 如何讓某些表爲只讀但允許用戶創建新表?
- 21. 如何爲用戶角色創建自定義發佈類型只讀?
- 22. 如何爲PHP中的某些用戶創建文本框只讀?
- 23. 如何在Apache服務器上爲用戶創建只讀FTP訪問?
- 24. 如何在創建後將所創建的列創建爲只讀?
- 25. 如何創建oracle DSN?
- 26. 創建oracle用戶的過期日期
- 27. oracle 11g顯示用戶創建表
- 28. 創建用戶在Oracle數據庫
- 29. 在循環中創建Oracle用戶
- 30. 在phpMyAdmin中創建一個只讀用戶