可以在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 10g中创建用户
- 2. 如何在SharePoint中创建新用户(访问者 - 只读)?
- 3. Oracle Apex用户创建
- 4. 如何在itext7中创建只读PDF
- 5. 如何创建只读属性
- 6. 如何创建非只读文件夹
- 7. 如何创建只读领域对象?
- 8. 如何在python中为ElasticSearch创建一个只读客户端?
- 9. 创建只能看到过程标题的Oracle用户
- 10. NSFileManager - 创建只读文件
- 11. 如何为PHP中的某些用户创建文本框只读?
- 12. 如何在Apache服务器上为用户创建只读FTP访问?
- 13. 如何在创建后将所创建的列创建为只读?
- 14. MS CRM 2011以只读方式为用户创建报价
- 15. 在RDS MySQL只读副本上创建用户
- 16. 在循环中创建Oracle用户
- 17. 创建oracle用户的过期日期
- 18. 用C++创建一个只读文件
- 19. 使用Python创建只读pdf文件
- 20. 使用apache poi创建列只读
- 21. 使用python创建只读日志
- 22. 如何在Oracle 11g中创建用户并授予权限
- 23. 如何在oracle 10g中创建没有密码的用户?
- 24. Firebase如何创建用户?
- 25. Gitolite - 如何创建用户?
- 26. 如何创建只能查看数据的登录用户?
- 27. 如何一次只能创建1个用户登录
- 28. 如何模拟一个*只是*创建的用户?
- 29. 是否可以创建一个调查猴子帐户'只读'
- 30. 如何创建Firebase用户帐户