oracle数据库——权限、角色、用户操作

权限

权限概念

  权限是执行特定类型的SQL命令或者访问其他方案对象的权利。 oracle权限包括系统权限,对象两种权限。
  系统权限是包含群集权限、数据库权限、索引权限、过程权限、角色权限等系统级别的权限,它控制了执行特定SQL命令的权利。
  对象权限是在对象级别控制数据库存取与使用的权利,也就是用户对其它方案的访问权限(方案:某用户拥有的所有的数据库对象的逻辑集合)。

--以管理员的身份连接到数据库,可通过查询数据字典表system_privilege_map查看到这些权限;--
    connect sys/orcl as sysdba;
    select *from system_privilege_map;

系统权限截取

    系统权限:
        数据库权限                  功能
        alter database        更改数据库的配置
        alter system          更改数据库初始化参数(表空间大小等)
        audit system          审计SQL,与此相对的是NOAUDIT SYSTEM
        audit any             审计任何方案对象
        表空间权限                  功能
        create tabelspace     创建表空间
        alter tablespace      更改表空间
        drop tablespace       删除表空间
        manage tablespace     管理表空间
        unlimited tablespace  不受配额限制使用表空间
        会话权限                   功能
        create session        创建会话,连接到数据库
        alter session         更改会话
        alter resource cost   更改概要文件中的计算资源消耗的方式
        restricted session    在受限会话模式下链接到数据库
        用户权限                   功能
        create user           创建用户
        alter user            更改用户
        become user           成为另一个用户
        drop user             删除用户
        角色权限                   功能
        create role           创建角色
        alter any role        更改任何角色
        drop any role         删除任何角色
        grant any role        向其他角色或用户授予角色
        ................

  如若我们新建了用户,但是没有赋予任何的权限,新建的用户则甚至不能连接到数据库;

create user xuexin identified by ghjkl--创建用户xuexin
       default tablespace users--默认表空间
       temporary tablespace temp;--默认临时表空间

用户创建
使用未授权的新用户连接
授权新用户并连接
 由以上截图可知,新用户只有在授予系统权限后才能进行相应操作,例如只有授予了创建会话权限之后才可以连接到数据库。
  对象权限是指用户之间的表视图序列等模式对象存取操作的权限;一个用户拥有它所创建的所有表,视图,序列等模式对象的所有对象权限,还可以将这些对象权限授予其它用户。
  不同的对象类型拥有不同种类的对象权限,例如表对象拥有alter,delete,index,insert,reference,select,update权限;不同对象类型拥有的对象权限:
对象权限表

权限授予

使用grant语句可以将对象权限授予给指定的用户,角色,以及公共用户组,具体语句如下:

grant 对象权限 on 具体授予对象(schema.object)to user/role/public

这里写图片描述
 只有具体对象权限被授予给用户,用户才可以对相关对象进行相关操作,若进行没有赋权的操作将会报错:
这里写图片描述
这里写图片描述

权限回收

系统权限的回收:

        revoke 系统权限 from 用户名/角色/公共组

  系统权限的回收不具有传递性,也即是a用户拥有系统权限A,并将其授予给b用户,现在回收a用户的A权限,b用户仍旧拥有系统权限A;
对象权限的回收:

revoke 对象权限 on 具体授予对象(schema.objectfrom user/role/public`

用户只能从自己授权的用户处回收对象权限,用户对象权限一旦被回收,则基于此权限创建的视图,过程都将无效。

角色

  角色是一组权限的集合,是权限管理的一种方案,避免了给同一个用户反复赋予权限的重复性劳动。

角色的创建:

        create role manager;--创建角色manager

前面的截图中用到了scott用户的students表,并且将该表的select,alter,update权限赋给了新建的riyue用户,现在将前面提到的一些系统权限授予给该用户,比如用户权限和管理权限,将权限赋予角色与将权限赋予给用户类似:

grant create user,alter user,become user,drop   user,sysdba,sysoper to manager

注意:必须是拥有这些权限的用户才可以创建新角色,并给新角色授权。

角色授予

有了角色,如果再次新建一个需要这些权限的用户时就可直接将角色授予新用户:

grant manager  to tiger;--将manager角色授予给新建的用户tiger;

用户角色的修改

alter user riyue default role none;--设置所有默认角色失效;
alter user riyue default role all;--设置所有默认角色生效;
alter user riyue default role all except role_name;--设置除了某个角色之外的所有默认角色生效;

--控制当前用户角色的使用还可以使用:
set role role_name identified by password/role_name0 identified by password/..... all [except role_name1 /role_name2 ]|none
all表示启用当前用户被授予的所有角色;前提是角色没有设置密码;
except表示除去特定角色之外的角色被重新启用;
none表示使用户的所有角色失效

查询用户所具有的角色

角色被授予用户之后可以在数据字典表user_role_privs中查询到,下图为整个案例用到的scott用户所具有的角色:
PL/SQL截图

删除角色

如果moge 角色不适用了可以将其删除,那么使用了该角色的用户将会失去角色对应的权限:
这里写图片描述

用户

标识用户是oracle数据库管理的最基本要求之一。每个连接到数据库的用户必须是数据库的合法用户。用户想要使用oracle的系统资源(数据,对象等),就必须提供用户名和密码,这样才能访问与账户关联的资源。每个用户必须有一个密码,并且只能和数据库中的一个模式相关联。

  在实际应用中,应用程序会有许许多多的用户,这些用户可能拥有相同的角色权限,也可能拥有不同的角色权限,都必须通过特定的标识符和密码经过前台的数据的传递到后台的验证最终确定是否能够连接到数据库以及登录到应用程序。

用户创建

create user user_name identified by password
default tablespace **     --默认表空间名字,缺省值设置为system
temperary tablespace **   --临时表空间名,缺省值设置为temp
quota ** on system        --配置用户在system表空间的的磁盘限额

  下图为用具有创建用户权限的sys系统用户创建用户:
这里写图片描述

修改用户特征

  与其他数据库对象一样,创建之后的用户并不是不可变的,可以通过alter user更改用户特征:
这里写图片描述

删除用户

drop user user_name [cascade];--cascade可选。

  如果没有cascade参数,则必须显示的删除该用户拥有的任何对象,或者将这些对象转移到另一个模式下;如果添加了cascade参数,则会自动删除该用户拥有的任何对象。

查询用户

通过查询包括用户和用户特征的信息的数据字典表,都可以获取用户信息。
这里写图片描述
其它相关数据字典视图和表:DBA_TS_QUOTAS(用户和表空间的磁盘空间利用率以及限制,针对其限额不是unlimited的用户)、DBA_PROFILES(可以赋予用户的配置权限)、USER_HISTORY$(具有用户名、加密密码和时间戳的密码历史记录).
这里写图片描述
这里写图片描述


__________________________The end___________________________

猜你喜欢

转载自blog.csdn.net/sandyxin5208/article/details/79119137