《用户权限和角色.ppt》由会员分享,可在线阅读,更多相关《用户权限和角色.ppt(50页珍藏版)》请在三一办公上搜索。
1、Oracle SQL开发基础,课程结构,第十一章 用户、权限和角色,目标:本章旨在向学员介绍:1)用户的概念及管理2)权限的概念及管理3)角色的概念及管理,时间:2学时教学方法:讲授ppt上机练习,本章要点,用户的概念及管理权限的概念及管理角色的概念及管理,第十一章 用户、权限和角色,用户、权限和角色:11.1管理用户11.2权限11.3角色,11.1管理用户,用户用户是数据库的使用者。用户相关的信息包括用户的用户名称和密码、用户的配置信息(包括用户的状态,用户的默认表空间等)、用户的权限、用户对应的方案中的对象等。用户一般是由DBA来创建和维护的。创建用户后,用户不可以执行任何Oracle操
2、作(包括登陆),只有赋予用户相关的权限,用户才能执行相关权限允许范围内的相关操作。对用户授权可以直接授权,也可以通过角色来间接授权。,创建和修改用户语法 1/11,创建用户创建用户语法Deafult tablespace 用户的默认表空间Temporary tablespace 用户的临时表空间Quota on 表示允许该用户在表空间中使用的空间总大小。可以设置多个不同的表空间执行该语句的用户需要有“创建用户”的权限,一般为系统的DBA用户。,CREATE USER user IDENTIFIED BY password default tablespace 默认表空间名 temp table
3、space 临时表空间名 quota 配额大小 on 表空间名,创建和修改用户语法 2/11,创建用户示例以SYSTEM用户登陆。用户被创建后,没有任何权限,包括登陆。,CREATE USER test IDENTIFIED BY test;,conn system请输入口令:*已连接。,创建和修改用户语法 3/11,登陆权限用户如果想登陆,至少需要有“CREATE SESSION”的权限。,GRANT CREATE SESSION TO test;,创建和修改用户语法 4/11,用户建表相关权限对新建用户,默认情况,用户对于其所拥有对象具有所有的数据的增删改查权限,但没有定义的权限(如创建表
4、等)。用户要想创建对象,需要有对象的创建权限CREATE TABLE、CREATE SEQUENCE等以test用户身份建表:,CREATE TABLE emp1(id NUMBER,last_name VARCHAR2(20),salary NUMBER);返回权限不足。,创建和修改用户语法 5/11,用户建表相关权限赋予test用户的创建表的权限。test用户身份执行建表操作:建表的相关权限:CREATE TABLE空间使用权限,需要DBA来分配。,CREATE TABLE emp1(id NUMBER,last_name VARCHAR2(20),salary NUMBER);返回错误“
5、表空间SYSTEM中无权限”,Conn system/oracle;GRANT CREATE TABLE TO test;,创建和修改用户语法 6/11,用户空间分配和管理:给用户分配表空间的配额;给用户指定一个默认的表空间,如果没有特殊指定,则对象都是在该用户默认表空间中创建的。如果不指定默认表空间,则系统缺省默认表空间是SYSTEM,默认情况下,SYSTEM表空间也没有给任何普通用户分配配额(SYS和SYSTEM用户除外。查询数据库表空间。以SYSTEM用户身份:,SELECT*FROM v$tablespace;,创建和修改用户语法 7/11,修改默认表空间和配额语法,ALTER USE
6、R 用户名QUOTA 10m ON 表空间名;,ALTER USER 用户名DEFAULT TABLESPACE 默认表空间名;,创建和修改用户语法 8/11,修改默认表空间和配额以SYSTEM用户身份执行:以test用户身份执行以SYSTEM用户身份执行,给test分配配额。,ALTER USER testQUOTA 10m ON example;,CREATE TABLE emp1(id NUMBER,last_name VARCHAR2(20),salary NUMBER);返回错误“表空间EXAMPLE中无权限”。,ALTER USER testDEFAULT TABLESPACE e
7、xample;,创建和修改用户语法 9/11,修改默认表空间及配额以test用户身份执行建表命令。上例显示了test用户在表空间“example”上分配了10m的空间使用权限,用户在该表空间上只有10M的使用权限,如果超过该限度,用户的相关操作执行失败。,CREATE TABLE emp1(id NUMBER,last_name VARCHAR2(20),salary NUMBER);表已创建。,创建和修改用户语法 10/11,修改用户密码语法DBA可以修改任何普通用户的密码,而不需要知道用户的旧密码。在sqlplus下执行password命令来修改登陆用户自己的密码,提示会输入旧密码和新密码
8、。,ALTER USER user IDENTIFIED BY 新密码;,创建和修改用户语法 11/11,用户状态用户状态:OPEN、EXPIRED、LOCKED。OPEN表正常状态,为用户帐号初始创建后状态。EXPIRED表示密码过期,用户下次登陆的时候需要修改密码;LOCKED表示该帐户已被锁定,不能执行任何Oracle相关操作(即使拥有相关的权限)。状态管理语句:,ALTER USER user PASSWORD EXPIRE;-密码过期ALTER USER user ACCOUNT LOCKUNLOCK;-帐户锁定/解锁,删除用户,删除用户删除用户语法CASCADE表示系统先自动删除该
9、用户下的所有对象,然后再删除该用户的定义。已经登陆的用户是不允许被删除的。,DROP USER user CASCADE,查询用户信息,数据字典视图与用户信息相关的数据字典视图有DBA_USERS是关于用户的属性信息DBA_TS_QUOTAS是用户的相关表空间的配额信息。数据字典视图一般是以SYSTEM用户身份执行:,SELECT username,account_status,default_tablespace FROM dba_users;,SELECT*FROM dba_ts_quotas;,第十一章 用户、权限和角色,用户、权限和角色:11.1管理用户11.2权限11.3角色,系统权
10、限概念及分类 1/6,权限管理 Oracle中存在两种权限系统权限(SYSTEM PRIVILEGE):允许用户在数据库中执行指定的行为,一般可以理解成比较通用的一类权限。对象权限(OBJECT PRIVILEGE):允许用户访问和操作一个指定的对象,该对象是一个确切存储在数据库中的命名对象。,系统权限概念及分类 2/6,系统权限包含100多种系统权限,其主要作用:执行系统端的操作,比如CREATE SESSION是登陆的权限,CREATE TABLESPACE创建表空间的权限管理某类对象,比如CREATE TABLE是用户建表的权限管理任何对象,比如CREATE ANY TABLE,ANY关
11、键字表明该权限“权力”比较大,可以管理任何用户下的表,所以一般只有DBA来使用该权限,普通用户是不应该拥有该类权限的。,系统权限概念及分类 3/6,表的系统权限CREATE TABLE(建表)CREATE ANY TABLE(在任何用户下建表)ALTER ANY TABLE(修改任何用户的表的定义)DROP ANY TABLE(删除任何用户的表)SELECT ANY TABLE(从任何用户的表中查询数据)UPDATE ANY TABLE(更改任何用户表的数据)DELETE ANY TABLE(删除任何用户的表的记录)。,系统权限概念及分类 4/6,索引及会话系统权限索引:CREATE ANY
12、INDEX(在任何用户下创建索引)ALTER ANY INDEX(修改任何用户的索引定义)DROP ANY INDEX(删除任何用户的索引)会话:(SESSION)CREATE SESSION(创建会话,登陆权限)ALTER SESSION(修改会话),系统权限概念及分类 5/6,表空间系统权限表空间CREATE TABLESPACE(创建表空间)ALTER TABLESPACE(修改表空间)DROP TABLESPACE(删除表空间)UNLIMITED TABLESPACE(不限制任何表空间的配额)注意:表空间的所有权限都不应该分配给普通用户。,系统权限概念及分类 6/6,系统特权系统特权权
13、限SYSDBA和SYSOPERSYSOPER的权限:启动停止数据库,恢复数据库等SYSDBA的权限:所有SYSOPER功能的管理权限;创建数据库等权限。注意:以系统特权权限登陆的用户一般都是特权用户,或称为超级用户。以SYSDBA身份登陆的用户在ORACLE中是权限最大的用户,可以执行数据库的所有操作。这些特权权限是不应该随便赋予给普通用户的。,授予和回收系统权限 1/3,系统权限授予授予用户系统权限语法sys_priv_list:是一个系统特权的列表,由逗号分隔User_list:是一个用户的列表,由逗号分隔WITH ADMIN OPTION:允许权限的接受者再把此特权授予其他用户。,GRA
14、NT sys_priv_list TO user_list WITH ADMIN OPTION,授予和回收系统权限 2/3,系统权限授予授予test用户CREATE SESSION权限以test身份执行CREATE SESSION权限管理:,GRANT create session TO neu;,GRANT create session TO test WITH ADMIN OPTION;,授予和回收系统权限 3/3,系统权限回收回收系统权限语法:REVOKE 系统权限列表 FROM user列表;只能回收使用GRANT授权过的权限,权限被回收后,用户就失去了原权限的使用权和管理权(如果有管
15、理权限的话)。注意:使用WITH ADMIN OPTION选项授予的权限在回收时候的级联回收策略如下:如果用户A授予权限给用户B,同时带有选项WITH ADMIN OPTION,用户B又把该权限赋予给用户C;如果此时用户A把权限从用户B处收回,那么用户B给予出去的权限(用户C对该权限的使用权)是否还继续存在。在系统权限的管理中,ORACLE的策略是继续保留权限,用户C继续拥有该权限的使用权。也就是说,系统权限不会级联回收。所以在权限回收时必须将获权用户的权限一一回收。,对象权限概念及分类 1/3,对象权限对象权限 是在指定的表、视图、序列或过程上执行指定动作的权限或权利。每个对象都有一个特殊的
16、可授予的权限集。,对象权限概念及分类 2/3,对象权限对象权限的种类不是很多,但数量较大,因为具体对象的数量很多。对象权限的分类,对象权限概念及分类 3/3,对象权限不同的对象有不同的对象权限对象的所有者自动拥有包含在该用户的方案中的所有对象的所有权限对象的所有者能够给予指定的权限到其他的帐户或者角色,授予和回收对象权限 1/3,授予对象权限object_priv:是将被授予的对象权限ALL:指定所有对象权限Columns:从一个表或视图中指定被授予权限的列,但需要注意,只有授予INSERT、REFERENCES或UPDATE特权时才可以指定列。ON object:是权限被授予的对象TO:指定
17、权限被授予谁PUBLIC授予权限给所有用户WITH GRANT OPTION 允许被授予权限的人再授予对象权限给其他用户和角色SCHEMA:指定用户名,如果省略,默认为当前用户,GRANTobject_priv|ALL PRIVILEGES|(columns)ONschema.object TOuser|PUBLIC WITH GRANT OPTION;,授予和回收对象权限 2/3,授予对象权限授予对象权限的用户是对象的拥有者(OWNER)或其他有对象管理权限的用户(常为DBA)。以neu身份执行授权命令:,GRANT select on employees To test;,授予和回收对象权
18、限 3/3,回收对象权限回收对象权限语法:对象的权限会级联回收。权限的查询DBA_SYS_PRIVS:查询所有的系统权限的授权情况。SESSION_PRIVS:能够查询出当前会话已经激活的所有系统权限。DBA_TAB_PRIVS:查询出表的对象权限的授权情况。,REVOKE 对象权限种类 ON 对象名 FROM user,第十一章 用户、权限和角色,用户、权限和角色:11.1管理用户11.2权限11.3角色,角色的作用及好处 1/2,角色(ROLE)的目的就是为了简化权限的管理。,角色的作用及好处 2/2,使用角色的好处简化权限的管理,而且易于以后的维护,使得维护成本降低。动态权限的管理权限的
19、可选择性,创建角色/授予角色权限 1/4,角色管理创建角色语法:以SYSTEM的用户身份建立测试角色tr。,CREATE ROLE role;,CREATE ROLE tr;,创建角色/授予角色权限 2/4,角色管理为角色授权语法:给角色tr授予create sequence的权限。,GRANT 权限列表 TO 角色列表,GRANT create sequence TO tr;,创建角色/授予角色权限 3/4,角色管理通过角色为用户授权语法:通过角色为用户test授权以test用户登陆,验证是否已拥有相关权限,GRANT tr TO test;,SELECT*FROM session_priv
20、s;,GRANT 角色列表 To 用户列表;,创建角色/授予角色权限 4/4,收回角色通过角色从用户收回权限语法:从角色收回权限语法:删除角色语法:,REVOKE 权限 FROM 角色;,REVOKE 角色 FROM 用户;,DROP ROLE 角色;,预定义的角色 1/3,预定义角色常用预定义角色:DBA角色。该角色中的权限通常赋给数据库管理员。CONNECT角色。RESOURCE角色。CONNECT和RESOURCE是相对较安全的角色,角色中包含的权限仅限于用户自己的对象范围,因此,可使用CONNECT和RESOURCE来简化权限管理。两者区别是RESOURCE中没有登陆的权限,并增加了几
21、种对象的创建权限。,预定义的角色 2/3,查看预定义角色的权限角色DBA中包含的系统权限CONNECT角色的相关权限:RESOURCE角色中的权限:,SELECT*FROM DBA_SYS_PRIVSWHERE GRANTEE=RESOURCE,SELECT*FROM DBA_SYS_PRIVSWHERE GRANTEE=CONNECT,SELECT*FROM DBA_SYS_PRIVSWHERE GRANTEE=DBA,预定义的角色 3/3,PUBLICPUBLIC对象既不是用户,也不是角色,代表公众,公开,PUBLIC中拥有的所有权限,所有数据库的用户都会自动拥有。为安全起见,PUBLIC
22、中不应该拥有任何权限。给PUBLIC赋予权限所有的用户都会自动从public中获得登陆的权限。,GRANT create session TO public;,获取角色信息,角色相关的数据字典视图DBA_ROLES:数据库中的角色列表DBA_ROLE_PRIVS:查询把哪些角色赋予给哪些对象了(包括给用户、角色、PUBLIC)SESSION_ROLES:当前用户激活的角色。,本章小结,用户的管理权限的管理角色的管理,练习,1.建立新用户user_neu2.给用户user_neu授权,使其能够登陆到数据库,能够查询neu下的employees表,能修改employees表的salary,last_name两个字段3.查询用户user_neu的权限4.回收用户user_neu的登陆权限5.回收用户user_neu的所有对象权限6.建立角色role_neu,练习(续),7.给角色role_neu授权,使其能够登陆到数据库8.赋角色role_neu给用户user_neu9.删除角色role_neu10.删除用户user_neu,谢谢,