1. 角色的概念
角色是权限的集合,使用角色的目的是使权限管理更加方便。在数据库中,如果有多个用户需要相同的权限,通过角色来管理这些权限是一个有效的方法。比如,如果有10个用户需要访问数据库,分别赋予这些用户多项权限(如CREATE SESSION、CREATE TABLE、UNLIMITED TABLESPACE等),会耗费大量时间和管理精力。此时,可以创建一个角色,将这些权限赋予该角色,再将角色授予10个用户,这样每个用户就可以一次性获得所有这些权限。
角色可以包含系统权限和对象权限。创建一个角色时,最初角色中没有任何权限,需要数据库管理员向角色中添加权限。随后,当角色被授予用户时,该用户就拥有了角色中的所有权限。
2. 角色的创建和删除
在Oracle数据库中,角色分为两类:
Oracle预定义角色:Oracle数据库安装后,系统自动创建了一些预定义角色,这些角色已经包含了特定的权限,管理员可以直接授予用户。常见的预定义角色包括:
- CONNECT:允许用户连接到数据库,包含CREATE SESSION权限。
- RESOURCE:包含创建表、创建序列、创建触发器等权限,用于需要创建数据库对象的用户。
- DBA:数据库管理员角色,拥有几乎所有的系统权限。
用户自定义角色:管理员可以根据实际需要创建自定义角色,创建角色的SQL命令如下:
CREATE ROLE 角色名;
例如,创建一个名为
role_1
的角色:CREATE ROLE role_1; -- 创建角色role_1
删除角色时使用
DROP ROLE
命令,删除角色后,用户将失去该角色中包含的所有权限。删除角色的SQL命令如下:DROP ROLE 角色名;
例如,删除刚创建的角色
role_1
:DROP ROLE role_1; -- 删除角色role_1
3. 角色权限的添加和删除
角色创建后,默认没有包含任何权限,需要通过GRANT
命令向角色添加权限。可以向角色授予系统权限和对象权限,但授予对象权限时,不能使用WITH GRANT OPTION
选项。授予系统权限时,可以使用WITH ADMIN OPTION
选项,这样被授予权限的用户或角色可以将该权限再次授予其他用户或角色。
例如,向role_1
角色授予对scott.emp
表的SELECT
和UPDATE
权限:
GRANT SELECT ON scott.emp TO role_1; -- 授予SELECT权限
GRANT UPDATE(sal) ON scott.emp TO role_1; -- 授予UPDATE权限
如果要删除角色中的某个权限,可以使用REVOKE
命令,命令格式与从用户中回收权限的方式相同,只是用角色名代替用户名即可。例如,从role_1
角色中删除scott.emp
表的SELECT
权限:
REVOKE SELECT ON scott.emp FROM role_1; -- 从角色中删除SELECT权限
4. 角色的分配和回收
角色被授予用户后,用户就获得了该角色中包含的所有权限。可以通过GRANT
命令将角色授予多个用户。例如,将role_1
授予user1
和user2
:
GRANT role_1 TO user1, user2; -- 将角色role_1授予user1和user2
回收角色使用REVOKE
命令,例如从user1
中回收role_1
角色:
REVOKE role_1 FROM user1; -- 从user1中回收role_1角色
5. 角色信息的查询
角色的相关信息存储在数据库的字典表中,可以通过查询这些字典表获取角色的信息,包括角色中包含的权限、授予的用户等。查询角色信息的具体方法和字典表名通常会在相关资料中进行说明。
非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。
学习成功人士的经验,提供全面的学习资源和社群支持,多种副业选择,总有一个适合你。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。