1、Oracle用户与对象权限与系统权限1 用户与模式用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象SYSTEM用户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象模式(schema):是某个用户拥有所有对象的集合。具有创建对象权限并创建了对象的用户称为拥有某个模式注意:创建数据库对象(视图,表等)的任一用户都拥有一个以该用户名称开头的模式,且被视为模式用户2 创建及修改用户条件:需要具有创建用户的权限,如sys,system,sysdba,dba role等语法:CREATE USER u
2、serIDENTIFIED BY password | EXTERNALLY | GLOBALLY AS external name DEFAULT TABLESPACE tablespace_nameTEMPORARY TABLESPACE tablespace_nameQUOTA n K|M | UNLIMITED ON tablespace_nameQUOTA n k|M | UNLIMITED ON tablespace_name . PASSWORD EXPIREACCOUNT LOCK | UNLOCK PROFILE profile_name | DEFAULT eg:CREAT
3、EUSERrobinson IDENTIFIEDBYtiger;-省略了DEFAULT TABLESPACE和TEMPORARY TABLESPACE时,则由database_properties中对应的参数确定SQLSELECTproperty_name,property_valueFROMdatabase_propertiesWHEREproperty_nameLIKEDEFAULT%;PROPERTY_NAMEPROPERTY_VALUE- -DEFAULT_TEMP_TABLESPACETEMPDEFAULT_PERMANENT_TABLESPACEUSERSDEFAULT_TBS_T
4、YPESMALLFILE更多关于表空间的请参考:Oracle表空间与数据文件1.修改用户修改用户的语法同创建用户,仅仅讲关键字create替换为alter,alter user可以修改除用户名之外的任一属性ALTERUSERrobinson ACCOUNT LOCK;2.修改密码DBA可以创建用户和修改密码用户本人可以使用ALTER USER语句修改密码SQLALTERrobinsonIDENTIFIEDBYnewpassword;3.删除用户:DROPUSERusername CASCADECASECADE连同用户创建的对象一并删除,如果该用户创建了对象,要加CASCADE删除,否则删除不掉
5、另外,不能删除当前正在与ORACLE服务器相连的用户。4.改变用户在表空间上的配额:ALTERUSERusernameQUOTA 0ONsystem;ALTERUSERscott QUOTA UNLIMITEDONUSERS;ALTERUSERdog QUOTA 30MONsystem;5.查看用户表空间配额(dba_ts_quotas):SQLSELECTUSERNAME,TABLESPACE_NAME,MAX_BYTES/1024/1024 Max MB2FROMdba_ts_quotasWHEREUSERNAME=SCOTT;USERNAMETABLESPACE_NAMEMaxMB- -
6、SCOTTSYSTEM306.查看特定对象下用户所拥有的对象使用dba_objects视图SQLSELECTowner,object_name,object_typeFROMdba_objectsWHEREowner=SCOTT;3 Oracle权限系统权限:允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等对象权限:允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等3.1 系统权限超过一百多种有效的权限(SELECT*FROMSYSTEM_PRIVILEGE_MAP查)数据库管理员具有高级权限以完成管理任务,例如:创建新用户删除用户删除表备份表a.常用的系统权限:
7、CREATESESSION创建会话CREATESEQUENCE创建序列CREATESYNONYM创建同名对象CREATETABLE在用户模式中创建表CREATEANYTABLE在任何模式中创建表DROPTABLE在用户模式中删除表DROPANYTABLE在任何模式中删除表CREATEPROCEDURE创建存储过程EXECUTEANYPROCEDURE执行任何模式的存储过程CREATEUSER创建用户DROPUSER删除用户CREATEVIEW创建视图b.授予用户系统权限GRANTprivilege , privilege.TOuser, user| role, PUBLIC.WITH ADMI
8、N OPTION;PUBLIC所有用户WITH ADMIN OPTION使用户同样具有分配权限的权利,可将此权限授予别人SQLGRANTCREATESESSION,CREATETABLE,CREATEUSERTOscott;SQLGRANTEXECUTEANYPROCEDURETOscottWITHADMINOPTION;SQLCONN scott;-scott具有WITH ADMIN OPTION,故可以将EXECUTE ANY PROCEDURE授予robinsonEnter password:Connected.SQLGRANTEXECUTEANYPROCEDURETOrobinson;
9、Grantsucceeded.SQLGRANTEXECUTEANYPROCEDURETOPUBLIC;-将EXECUTE ANY PROCEDURE授予所有用户Grantsucceeded.SQLCONN system/redhat;-使用system为robinson授予CREATE TABLE、CREATE SESSION权限Connected.SQLGRANTCREATETABLE,CREATESESSIONTOrobinson;Grantsucceeded.c.使用系统权限-使用robinson具有创建会话、创建表SQLCREATETABLEtb1ASSELECT*FROMUSER_T
10、ABLES;-下面提示没有权限在users表空间创建对象CREATETABLEtb1ASSELECT*FROMUSER_TABLES*ERROR at line 1:ORA-01950:noprivilegesontablespaceUSERSSQLCONN sysassysdba;-使用sys帐户登陆并为robinson在users表空间指定配额后可以创建表tb1Enter password:Connected.SQLALTERUSERrobinson QUOTA 10MONUSERS;Useraltered.SQLCONN robinson/lion;Connected.SQLCREATE
11、TABLEtb1ASSELECT*FROMUSER_TABLES;Tablecreated.d.查看系统权限dba_sys_privs-针对所有用户被授予的系统权限user_sys_privs-针对当前登陆用户被授予的系统权限SQLSELECTgrantee,privilege,admin_optionFROMdba_sys_privs2WHEREgranteeIN(SCOTT,ROBINSON)3ORDERBYgrantee;GRANTEEPRIVILEGEADM- - -ROBINSONCREATESESSIONNOROBINSONCREATETABLENOROBINSONEXECUTEA
12、NYPROCEDURENOSCOTTCREATEPUBLICSYNONYMNOSCOTTCREATESESSIONNOSCOTTCREATESYNONYMNOSCOTTCREATETABLENOSCOTTCREATEUSERNOSCOTTCREATEVIEWNOSCOTTEXECUTEANYPROCEDUREYESSCOTTUNLIMITED TABLESPACENOe.回收系统权限REVOKEprivilege|roleFROMuser_name|role_name|PUBLIC-下面的示例中并没有回收掉原来由scott授予给robisnon EXECUTE ANY PROCEDURE的权限
13、SQLREVOKEEXECUTEANYPROCEDUREFROMscott;Revokesucceeded.SQLselectgrantee,privilege,admin_optionfromdba_sys_privs2wheregranteein(SCOTT,ROBINSON)andprivilege=EXECUTE ANY PROCEDURE3orderbygrantee;GRANTEEPRIVILEGEADM- - -ROBINSONEXECUTEANYPROCEDURENO注意:对于使用with admin option为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户
14、来说,取消该用户的系统权限并不会级联取消这些用户的相同权限3.2 对象权限不同的对象具有不同的对象权限对象的拥有者拥有所有权限对象的拥有者可以向外分配权限ORACLE一共有种对象权限对象权限表视图序列过程修改(alter)删除(delete)执行(execute)索引(index)插入(insert)关联(references)选择(select)更新(update)a.对象授权GRANTobject_privALL(columns)ONobjectTOuser|role|PUBLICWITH GRANT OPTION;ALL:所有对象权限PUBLIC:授给所有的用户WITHGRANTOPTI
15、ON:允许用户再次给其它用户授权b.授予系统权限与授予对象权限的语法差异:授予对象权限时需要指定关键字ON,从而能够确定权限所应用的对象。对于表和视图可以指定特定的列来授权。-对象授权示例SQLSHOWUSER;USERisSCOTTSQLGRANTSELECTONempTOrobinson;Grantsucceeded.SQLGRANTUPDATE(sal,mgr)ONempTOrobinsonWITHGRANTOPTION;Grantsucceeded.-新创建一个用户john,使用robinson账户授予更新scott.emp(sal,mgr)的权限SQLCREATEUSERjohn I
16、DENTIFIEDBYjohn;Usercreated.SQLGRANTCREATESESSIONTOjohn;Grantsucceeded.SQLCONN ROBINSON/LIONConnected.SQLGRANTUPDATE(sal,mgr)ONscott.empTOjohn;-授予scott.emp(sal,mgr)的更新权限Grantsucceeded.SQLUPDATEscott.empSETsal=sal+100WHEREename=SCOTT;-成功更新1 row updated.-向数据库中所有用户分配权限SQLGRANTSELECTONdeptTOPUBLIC;Grant
17、succeeded.c.查询权限分配情况数据字典视图描述ROLE_SYS_PRIVS角色拥有的系统权限ROLE_TAB_PRIVS角色拥有的对象权限USER_TAB_PRIVS_MADE查询授出去的对象权限(通常是属主自己查)USER_TAB_PRIVS_RECD用户拥有的对象权限USER_COL_PRIVS_MADE用户分配出去的列的对象权限USER_COL_PRIVS_RECD用户拥有的关于列的对象权限USER_SYS_PRIVS用户拥有的系统权限USER_TAB_PRIVS用户拥有的对象权限USER_ROLE_PRIVS用户拥有的角色-查询已授予的对象权限(即某个用户对哪些表对哪些用户开放了对象权限)SQLSELECT*FROMuser_tab_privs_made;-下面是scott用户开放的对象权限GRANTEETABLE_NAMEGRANTORPRIVILEGEGRA HIE- - - - - -PUBLICDEPTSCOTTSELECTNONOROBINSONEMPSCOTTSELECTNONO-查询列上开放的对象权限SQLSELECT*FROMuser_col_privs_made;GRANTEETABLE_NAMECOLUMN_NAMEGRANTORPRIVILEGEGRA-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1