权限分为
1.直接权限系统权限(可以赋给角色和用户) 和对象权限(直接将某个表、视图、存储过程等对象的操作权限赋给用户或角色)
2.间接权限 角色赋予用户所带有的权限
较为方便的设权限为:先设角色权限 然后将角色赋予给用户,这样不会导致管理混乱,直接赋予用户系统权限容易导致管理混乱
△.如果是授予的DEFAULT的时候,那么这个用户登录的时候自动就具备了这个角色,不需要进行这个角色的密码验证的。如果不是DEFAULT的,那么可以使用SET ROLE ROLE_NAME IDENTIFIED ROLE_PASSWORD来进行密码验证后,用户才能具有相应的角色。所以你即使给用户赋予了某个角色,如果没有设置defaule,登录后是默认不生效的
alter user syc default role all;alter user syc default role r1;
复制
一些视图:
-- 确定角色的权限
select * from role_tab_privs ; 包含了授予角色的对象权限
select * from role_role_privs ; 包含了授予另一角色的角色
select * from role_sys_privs ; 包含了授予角色的系统权限
-- 确定用户帐户所授予的权限
select * from DBA_tab_privs ; 直接授予用户帐户的对象权限
select * from DBA_role_privs ; 授予用户帐户的角色
select * from DBA_sys_privs ; 授予用户帐户的系统权限
复制
(1)系统权限(角色1下有角色2,角色2下没有角色,角色再套角色需要接着查赋予用户的角色上的角色权限):
select * from (
select grantee,privilege,'' role1,'' role2
,'' DEFAULT_ROLE from dba_sys_privs
--直接赋予用户的系统权限
union all
select b.grantee,privilege,
b.grantee,b.GRANTED_ROLE role,b.DEFAULT_ROLE from dba_sys_privs a
,dba_role_privs b where
a.GRANTEE=b.GRANTED_ROLE
--赋予用户的角色权限
union all
select b.grantee,privilege,b.granted_role role1
,c.GRANTED_ROLE role2,b.DEFAULT_ROLE
from dba_role_privs b,dba_role_privs c,dba_sys_privs a
where b.GRANTED_ROLe=c.GRANTEE and
a.GRANTEE=c.GRANTED_ROLE
--赋予用户的角色上的角色权限
) where grantee ='SYC'
复制
(2)对象权限(角色1下有角色2,角色2下没有角色,角色再套角色需要接着查赋予用户的角色上的角色权限):
select * from (
select owner,privilege,table_name,
'' role1,'' role2 from DBA_tab_privs --直接赋予用户的系统权限
union all
select a.owner,privilege,table_name,
b.grantee role ,'' from role_tab_privs a,dba_role_privs b where
a.role=b.GRANTED_ROLE and b.grantee='JULAN'
--赋予用户的角色权限
union all
select b.grantee,privilege,b.granted_role role1
,c.GRANTED_ROLE role2 from dba_role_privs b
,dba_role_privs c,role_tab_privs a
where b.GRANTED_ROLe=c.GRANTEE and
b.grantee='JULAN' and a.role = c.granted_role
--赋予用户的角色上的角色权限
) where owner ='SYC'
复制
授予存储过程的查询权限:
CREATE PROCEDURE、创建存储程序
CREATE ANY PROCEDURE、 创建任何存储程序
ALTER ANY PROCEDURE、更改任何存储程序
DROP ANY PROCEDURE、删除任何存储程序
EXECUTE ANY PROCEDURE、执行任何存储程序
DEBUG ANY PROCEDURE.查看定义任何存储程序
而实际上存储程序的对象权限只有EXECUTE和DEBUG两种,
execute有查看和执行的权限
debug只有查看的权限
授予所有存储过程查询权限只需:grant debug any procedure to xxx;
用户自己查询:
查询授出去的对象权限
select * from user_tab_privs_made;
select * from all_tab_privs_made;
用户拥有的对象权限
select * from user_tab_privs_recd;
select * from all_tab_privs_recd;
用户分配出去的列的对象权限
select * from user_col_privs_made;
select * from all_col_privs_made;
用户拥有的关于列的对象权限
select * from user_col_privs_recd;
select * from all_col_privs_recd
复制
文章转载自程序碎碎念,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
717次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
640次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
558次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
502次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
498次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
492次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
473次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
424次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
377次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
365次阅读
2025-05-05 19:28:36