管理用户和权限AccountlockingTablespacequotasTemporarytablespaceDefaulttablespaceRoleprivilegesResourcelimitsSecuritydomainDirectprivilegesAuthenticationmechanism用户和安全性创建用户的步骤确定用户用于存放对象的表空间.确定每个表空间的配额.指定默认表空间和临时表空间.创建用户.为用户分配权限和角色.创建一个新的用户设置初始口令:CREATEUSERaaronIDENTIFIEDBYsoccerDEFAULTTABLESPACEdataTEMPORARYTABLESPACEtempQUOTA15MONdataQUOTA10MONusersPASSWORDEXPIRE;改变用户的表空间配额用户的表空间配额在下面的情况下可以考虑被修改:用户的表异常的增长.应用被增强并需要更多的表和索引.对象被重组并被放到不同的表空间上.要修改表空间的配额,输入下面的命令:ALTERUSERaaronQUOTA0ONUSERS;删除用户使用DROP命令删除用户.如果方案中包含了对象,使用CASCADE子句删除方案中包含的所有对象.当前连接在Oracle服务器上的用户不能被删除.DROPUSERaaron;DROPUSERaaronCASCADE;得到用户的信息通过查询数据字典可以得到用户的信息:•DBA_USERS•DBA_TS_QUOTAS数据库的安全性:系统的安全性数据的安全性两种类型的用户权限:系统:使用户在数据库中能够执行特定的任务对象:使用户可以访问和操作特定的对象管理权限有超过100个不同的系统权限在权限中的ANY关键字表示用户在所有方案中都有权限.GRANT命令将权限授予一个用户或者一组用户.REVOKE命令将权限从用户身上移走.数据库管理员具有最高的系统权限,能够完成下列任务:创建新的用户删除用户删除表备份表系统权限CategoryExamplesINDEXCREATEANYINDEXALTERANYINDEXDROPANYINDEXTABLECREATETABLECREATEANYTABLEALTERANYTABLEDROPANYTABLESELECTANYTABLEUPDATEANYTABLEDELETEANYTABLESESSIONCREATESESSIONALTERSESSIONRESTRICTEDSESSIONTABLESPACECREATETABLESPACEALTERTABLESPACEDROPTABLESPACEUNLIMITEDTABLESPACE系统权限:例子用户系统权限一旦用户被创建,DBA可以授予特定的系统权限给用户.例如一个应用开发者,可能会有下列系统权限:CREATESESSIONCREATETABLECREATESEQUENCECREATEVIEWCREATEPROCEDUREGRANTprivilege[,privilege...]TOuser[,user|role,PUBLIC...][WITHADMINOPTION];GRANTCREATESESSIONTOemi;GRANTCREATESESSIONTOemiWITHADMINOPTION;授予系统权限使用GRANT命令授予系统权限.使用ADMIN选项可以将授予能力进一步传递下去.SYSDBA和SYSOPER权限ExamplesCategorySYSOPERRECOVERDATABASEALTERDATABASEBACKUPCONTROLFILETOALTERDATABASEOPEN|MOUNTSHUTDOWNSTARTUPALTERDATABASEARCHIVELOGRESTRICTEDSESSIONSYSOPERPRIVILEGESWITHADMINOPTIONSYSDBAALTERTABLESPACEBEGIN/ENDBACKUPRESTRICTEDSESSIONRECOVERDATABASEUNTILCREATEDATABASEREVOKECREATETABLEFROMemi;移除系统权限使用REVOKE命令从用户上去除系统权限.具有ADMINOPTION选项的用户可以移除系统权限.只有用GRANT命令授予的权限可以被移除.REVOKE{privilege[,privilege...]}FROM{user[,user...]|role|PUBLIC}DBAGRANTREVOKEJeffEmiJeffEmiDBA移除具有ADMINOPTION选项的系统权限Objectpriv.TableViewSequenceProcedureALTERDELETEEXECUTEINDEXINSERTREFERENCESSELECTUPDATE对象权限对象权限每种对象的权限都不相同.对象的所有者拥有对象的所有权限.对象的所有者可以将自己对象的权限赋予其他人.GRANTobject_priv[(columns)]ONobjectTO{user|role|PUBLIC}[WITHGRANTOPTION];GRANTEXECUTEONdbms_outputTOjeff;GRANTUPDATEONemi.customersTOjeffWITHGRANTOPTION;授予对象权限使用GRANT命令授予对象权限.授予者必须是对象的拥有者或者具有GRANTOPTION选项的用户怎样删掉对象权限使用REVOKE语句可以删除授予对象的权限.通过WITHGRANTOPTION授予其他用户的权限也可以被级联的删除.REVOKE{privilege[,privilege...]|ALL}ONobjectFROM{user[,user...]|role|PUBLIC};REVOKESELECTONemi.ordersFROMjeff;移除对象权限使用REVOKE命令移除对象权限.移除对象权限的用户必须是要移除对象权限的对象的拥有者.GRANTREVOKEBobJeffEmiEmiJeffBob移除具有GRANTOPTION选项的对象权限得到权限的信息权限的信息可以通过查询下面的数据字典得到:•DBA_SYS_PRIVS•SESSION_PRIVS•DBA_TAB_PRIVS•DBA_COL_PRIVSUsersPrivilegesRolesUPDATEONJOBSINSERTONJOBSSELECTONJOBSCREATETABLECREATESESSIONHR_CLERKHR_MGRABC角色简化了权限的管理实现了动态权限管理可以选择可用的权限角色的好处带有ADMIN选项的角色:不鉴别:口令鉴别:CREATEROLEoe_clerk;CREATEROLEhr_clerkIDENTIFIEDBYbonus;创建角色ALTERROLEhr_clerkIDENTIFIEDEXTERNALLY;ALTERROLEhr_managerNOTIDENTIFIED;ALTERROLEoe_clerkIDENTIFIEDBYorder;修改角色•ALTERROLE修改认证的方法.•修改角色需要ADMINoption或者ALTERANYROLE权限.RoleNameDescriptionCONNECT,为了满足向后兼容性而保留RESOURCE,DBAEXP_FULL_DATABASE导出数据库的权限IMP_FULL_DATABASE导入数据库的权限DELETE_CATALOG_ROLE在数据字典上的DELETE权限EXECUTE_CATALOG_ROLE在数据字典包上的EXECUTE权限SELECT_CATALOG_ROLE在数据字典上的SELECT权限预定义角色GRANThr_clerkTOhr_manager;GRANToe_clerkTOscott;GRANThr_managerTOscottWITHADMINOPTION;分配权限使用GRANT命令分配角色.ALTERUSERscottDEFAULTROLEhr_clerk,oe_clerk;ALTERUSERscottDEFAULTROLEALL;ALTERUSERscottDEFAULTROLEALLEXCEPThr_clerk;ALTERUSERscottDEFAULTROLENONE;建立默认角色•一个用户可以被分配许多角色.•一个用户可以被指定默认角色.•可以限制用户的默认角色.启用和禁用角色禁用角色将从一个用户身上暂时移走角色.启用角色暂时将角色授予用户.使用SETROLE命令启用或者禁用角色.默认角色是用户在登录时自动启用的角色.在启用角色时可能需要口令.SETROLEhr_clerk;SETROLEoe_clerkIDENTIFIEDBYorder;SETROLEALLEXCEPToe_clerk;启用和禁用角色•从用户上移除角色需要ADMINOPTION或者GRANTANYROLE权限.•移除角色:REVOKEhr_managerFROMPUBLIC;REVOKEoe_clerkFROMscott;从用户上移除角色DROPROLEhr_manager;RemovingRoles删除一个角色:从所有被授予的用户和角色上移除角色从数据库中移除需要ADMINOPTION或者DROPANYROLE权限删除角色:DefaultrolePasswordprotected(notdefault)SelectprivilegesINSERT,UPDATE,DELETE,andSELECTprivilegesPAY_CLERKPAY_CLERK_RO使用口令和默认角色的提示得到角色的信息关于角色的信息可以在下面的数据字典中得到:•DBA_ROLES:所有存在于数据库的角色•DBA_ROLE_PRIVS:授予用户或者角色的角色•ROLE_ROL_PRIVS:授予角色的角色•DBA_SYS_PRIVS:授予用户和角色的系统权限•ROLE_SYS_PRIVS:授予角色的系统权限•ROLE_TAB_PRIVS:授予角色的对象权限•SESSION_ROLES:当前用户可用的角色