角色权限
- 创建角色
--设置用创建角色role1
create role role1;

select * from dba_roles where role = 'ROLE1';可以查到刚增加的角色role1
- 赋予系统权限给角色
--给角色role1赋予创建表权限并可以将自己拥有的权限转授给别的用户,自身没有拥有的权限无法授权给别的用户
grant create table to role1 with admin option;

select * from dba_sys_privs where grantee = 'ROLE1';可以查到刚赋予的系统权限create table
- 系统权限测试
我们可以测试一下把这个角色赋予之前创建的用户看是否生效。如下操作
-
- 执行:grant role1 to ryh with admin option;

select a.grantee name,b.grantee role,b.privilege from dba_role_privs a,dba_sys_privs b where a.grantee = 'RYH' and b.grantee = 'ROLE1';可以查到ryh用户赋予了role1角色拥有对应的两个系统权限。
-
- 执行:insert into test_1(id,name) values(1,'abcd');

如图可以看到建表成功。
-
- 执行:insert into test_1(id,name) values(2,'cccc');

如图所示报没有test_1对象插入权限。因为ryh用户赋予的是role1角色,而role1角色没有插入权限因此报错。
-
- 赋予插入权限grant insert table to role1;

select a.grantee name,b.grantee role,b.privilege from dba_role_privs a,dba_sys_privs b where a.grantee = 'RYH' and b.grantee = 'ROLE1';可以查到ryh用户赋予了role1角色,而role1新增了insert table系统权限。
-
- 重新插入刚才的数据insert into test_1(id,name) values(2,'cccc');

此时可以成功插入进去
- 回收系统权限
- 回收用户角色
--回收用户ryh01的vti角色权限
revoke vti from ryh01;


原本ryh01用户有vit,resource两个角色,执行回收语句后回收vti以后系只剩下resource角色。
-
- 回收用户系统权限
--回收用户ryh的insert table系统权限
revoke insert table from ryh01;

-
- 回收角色系统权限
revoke insert table from role1;


原本角色role1有insert table系统权限,执行回收语句后insert table系统权限就没有了。
- 查看用户角色
--回查看当前用户角色
select * from dba_role_privs where grantee = 'RYH01';

- 查看角色系统权限
select * from dba_sys_privs where grantee = 'ROLE1';

- 查询当前视图权限
select * from dba_tab_privs;

- 查看系统权限编号
select * from sysgrants;

- 赋予对象权限
--赋予ryh用户下test_1表查询权限并可以将该权限赋予其它用户
grant select on ryh.test_1 to ryh01 with grant option;
- 回收对象权限
--回收ryh用户下test_1表查询权限
revoke select on ryh.test_1 from ryh01 cascade;
这里赋予的时候如果使用了grant则回收的时候必须使用cascade。否则回收无效。如图所示:


会报回收权限无效。因为with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是当管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如:grant select on 表名 to A with grant option;,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。
给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke create session from B.

本文详细介绍了达梦数据库中角色权限的管理,包括如何创建角色、赋予系统权限、测试权限生效、回收权限以及对象权限的管理。通过实例演示了权限的授予、回收和传播效果,有助于理解数据库权限控制机制。
1234

被折叠的 条评论
为什么被折叠?



