Copyright©OracleCorporation,2001.Allrightsreserved.控制用户权限13-2Copyright©OracleCorporation,2001.Allrightsreserved.目标通过本章学习,您将可以:•创建用户•创建角色•使用GRANT和REVOKE语句赋予和回收权限•创建数据库联接13-3Copyright©OracleCorporation,2001.Allrightsreserved.控制用户权限数据库管理员用户用户名和密码权限13-4Copyright©OracleCorporation,2001.Allrightsreserved.权限•数据库安全性:–系统安全性–数据安全性•系统权限:对于数据库的权限•对象权限:操作数据库对象的权限•方案:一组数据库对象集合,例如表,视图,和序列13-5Copyright©OracleCorporation,2001.Allrightsreserved.系统权限•超过一百多种100有效的权限•数据库管理员具有高级权限以完成管理任务,例如:–创建新用户–删除用户–删除表–备份表13-6Copyright©OracleCorporation,2001.Allrightsreserved.创建用户DBA使用CREATEUSER语句创建用户CREATEUSERscottIDENTIFIEDBYtiger;Usercreated.CREATEUSERuserIDENTIFIEDBYpassword;13-7Copyright©OracleCorporation,2001.Allrightsreserved.用户的系统权限•用户创建之后,DBA会赋予用户一些系统权限•以应用程序开发者为例,一般具有下列系统权限:–CREATESESSION(创建会话)–CREATETABLE(创建表)–CREATESEQUENCE(创建序列)–CREATEVIEW(创建视图)–CREATEPROCEDURE(创建过程)GRANTprivilege[,privilege...]TOuser[,user|role,PUBLIC...];13-8Copyright©OracleCorporation,2001.Allrightsreserved.赋予系统权限DBA可以赋予用户特定的权限GRANTcreatesession,createtable,createsequence,createviewTOscott;Grantsucceeded.13-9Copyright©OracleCorporation,2001.Allrightsreserved.角色不使用角色分配权限使用角色分配权限权限用户Manager13-10Copyright©OracleCorporation,2001.Allrightsreserved.创建角色并赋予权限CREATEROLEmanager;Rolecreated.GRANTcreatetable,createviewTOmanager;Grantsucceeded.GRANTmanagerTODEHAAN,KOCHHAR;Grantsucceeded.•创建角色•为角色赋予权限•将角色赋予用户13-11Copyright©OracleCorporation,2001.Allrightsreserved.修改密码•DBA可以创建用户和修改密码•用户本人可以使用ALTERUSER语句修改密码ALTERUSERscottIDENTIFIEDBYlion;Useraltered.13-12Copyright©OracleCorporation,2001.Allrightsreserved.对象权限表视图序列过程修改删除执行索引插入关联选择更新对象权限13-13Copyright©OracleCorporation,2001.Allrightsreserved.对象权限•不同的对象具有不同的对象权限•对象的拥有者拥有所有权限•对象的拥有者可以向外分配权限GRANTobject_priv[(columns)]ONobjectTO{user|role|PUBLIC}[WITHGRANTOPTION];13-14Copyright©OracleCorporation,2001.Allrightsreserved.分配对象权限•分配表EMPLOYEES的查询权限•分配表中各个列的更新权限GRANTselectONemployeesTOsue,rich;Grantsucceeded.GRANTupdate(department_name,location_id)ONdepartmentsTOscott,managerGrantsucceeded.13-15Copyright©OracleCorporation,2001.Allrightsreserved.WITHGRANTOPTION和PUBLIC关键字•WITHGRANTOPTION使用户同样具有分配权限的权利•向数据库中所有用户分配权限GRANTselect,insertONdepartmentsTOscottWITHGRANTOPTION;Grantsucceeded.GRANTselectONalice.departmentsTOPUBLIC;Grantsucceeded.13-16Copyright©OracleCorporation,2001.Allrightsreserved.查询权限分配情况数据字典视图描述ROLE_SYS_PRIVS角色拥有的系统权限ROLE_TAB_PRIVS角色拥有的对象权限USER_ROLE_PRIVS用户拥有的角色USER_TAB_PRIVS_MADE用户分配的关于表对象权限USER_TAB_PRIVS_RECD用户拥有的关于表对象权限USER_COL_PRIVS_MADE用户分配的关于列的对象权限USER_COL_PRIVS_RECD用户拥有的关于列的对象权限USER_SYS_PRIVS用户拥有的系统权限13-17Copyright©OracleCorporation,2001.Allrightsreserved.收回对象权限•使用REVOKE语句收回权限•使用WITHGRANTOPTION子句所分配的权限同样被收回REVOKE{privilege[,privilege...]|ALL}ONobjectFROM{user[,user...]|role|PUBLIC}[CASCADECONSTRAINTS];13-18Copyright©OracleCorporation,2001.Allrightsreserved.收回对象权限举例REVOKEselect,insertONdepartmentsFROMscott;Revokesucceeded.13-19Copyright©OracleCorporation,2001.Allrightsreserved.数据库联接数据库联接使用户可以在本地访问远程数据库本地数据库远程数据库SELECT*FROMemp@HQ_ACME.COM;HQ_ACME.COMdatabaseEMPTable13-20Copyright©OracleCorporation,2001.Allrightsreserved.数据库联接•创建数据库联接•使用SQL语句访问远程数据库CREATEPUBLICDATABASELINKhq.acme.comUSING'sales';Databaselinkcreated.SELECT*FROMemp@HQ.ACME.COM;13-21Copyright©OracleCorporation,2001.Allrightsreserved.总结语句功能CREATEUSER创建用户(通常由DBA完成)GRANT分配权限CREATEROLE创建角色(通常由DBA完成)ALTERUSER修改用户密码REVOKE收回权限通过本章学习,您已经可以使用DCL控制数据库权限,创建数据库联接: