Oracle 用户对象权限系统权限Word格式文档下载.docx
- 文档编号:20389620
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:13
- 大小:20.45KB
Oracle 用户对象权限系统权限Word格式文档下载.docx
《Oracle 用户对象权限系统权限Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Oracle 用户对象权限系统权限Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
CREATEUSERrobinsonIDENTIFIEDBYtiger;
--省略了DEFAULTTABLESPACE和TEMPORARYTABLESPACE时,则由database_properties中对应的参数确定
SQL>
SELECTproperty_name,property_valueFROMdatabase_propertiesWHEREproperty_nameLIKE'
DEFAULT%'
;
PROPERTY_NAMEPROPERTY_VALUE
--------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACETEMP
DEFAULT_PERMANENT_TABLESPACEUSERS
DEFAULT_TBS_TYPESMALLFILE
更多关于表空间的请参考:
Oracle表空间与数据文件
1.修改用户
修改用户的语法同创建用户,仅仅讲关键字create替换为alter,alteruser可以修改除用户名之外的任一属性
ALTERUSERrobinsonACCOUNTLOCK;
2.修改密码
DBA可以创建用户和修改密码
用户本人可以使用ALTERUSER语句修改密码
ALTERrobinsonIDENTIFIEDBYnewpassword;
3.删除用户:
DROPUSERusername[CASCADE]
CASECADE连同用户创建的对象一并删除,如果该用户创建了对象,要加CASCADE删除,否则删除不掉
另外,不能删除当前正在与ORACLE服务器相连的用户。
4.改变用户在表空间上的配额:
ALTERUSERusernameQUOTA0ONsystem;
ALTERUSERscottQUOTAUNLIMITEDONUSERS;
ALTERUSERdogQUOTA30MONsystem;
5.查看用户表空间配额(dba_ts_quotas):
SELECTUSERNAME,TABLESPACE_NAME,MAX_BYTES/1024/1024"
MaxMB"
2FROMdba_ts_quotasWHEREUSERNAME='
SCOTT'
USERNAMETABLESPACE_NAMEMaxMB
--------------------------------------------------------
SCOTTSYSTEM30
6.查看特定对象下用户所拥有的对象
使用dba_objects视图
SELECTowner,object_name,object_typeFROMdba_objectsWHEREowner='
三、ORACLE权限:
系统权限:
允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等
对象权限:
允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等
1.系统权限
超过一百多种有效的权限(SELECT*FROMSYSTEM_PRIVILEGE_MAP查)
数据库管理员具有高级权限以完成管理任务,例如:
–创建新用户
–删除用户
–删除表
–备份表
a.常用的系统权限:
CREATESESSION创建会话
CREATESEQUENCE创建序列
CREATESYNONYM创建同名对象
CREATETABLE在用户模式中创建表
CREATEANYTABLE在任何模式中创建表
DROPTABLE在用户模式中删除表
DROPANYTABLE在任何模式中删除表
CREATEPROCEDURE创建存储过程
EXECUTEANYPROCEDURE执行任何模式的存储过程
CREATEUSER创建用户
DROPUSER删除用户
CREATEVIEW创建视图
b.授予用户系统权限
GRANTprivilege[,privilege...]TOuser[,user|role,PUBLIC...]
[WITHADMINOPTION];
PUBLIC所有用户
WITHADMINOPTION使用户同样具有分配权限的权利,可将此权限授予别人
SQL>
GRANTCREATESESSION,CREATETABLE,CREATEUSERTOscott;
GRANTEXECUTEANYPROCEDURETOscottWITHADMINOPTION;
CONNscott;
--scott具有WITHADMINOPTION,故可以将EXECUTEANYPROCEDURE授予robinson
Enterpassword:
Connected.
GRANTEXECUTEANYPROCEDURETOrobinson;
Grantsucceeded.
GRANTEXECUTEANYPROCEDURETOPUBLIC;
--将EXECUTEANYPROCEDURE授予所有用户
CONNsystem/redhat;
--使用system为robinson授予CREATETABLE、CREATESESSION权限
GRANTCREATETABLE,CREATESESSIONTOrobinson;
c.使用系统权限
--使用robinson具有创建会话、创建表
CREATETABLEtb1ASSELECT*FROMUSER_TABLES;
--下面提示没有权限在users表空间创建对象
CREATETABLEtb1ASSELECT*FROMUSER_TABLES
*
ERRORatline1:
ORA-01950:
noprivilegesontablespace'
USERS'
CONNsysassysdba;
--使用sys帐户登陆并为robinson在users表空间指定配额后可以创建表tb1
ALTERUSERrobinsonQUOTA10MONUSERS;
Useraltered.
CONNrobinson/lion;
Tablecreated.
d.查看系统权限
dba_sys_privs--针对所有用户被授予的系统权限
user_sys_privs--针对当前登陆用户被授予的系统权限
SELECTgrantee,privilege,admin_optionFROMdba_sys_privs
2WHEREgranteeIN('
'
ROBINSON'
)
3ORDERBYgrantee;
GRANTEEPRIVILEGEADM
-------------------------------------------------------------------------
ROBINSONCREATESESSIONNO
ROBINSONCREATETABLENO
ROBINSONEXECUTEANYPROCEDURENO
SCOTTCREATEPUBLICSYNONYMNO
SCOTTCREATESESSIONNO
SCOTTCREATESYNONYMNO
SCOTTCREATETABLENO
SCOTTCREATEUSERNO
SCOTTCREATEVIEWNO
SCOTTEXECUTEANYPROCEDUREYES
SCOTTUNLIMITEDTABLESPACENO
e.回收系统权限
REVOKE{privilege|role}FROM{user_name|role_name|PUBLIC}
--下面的示例中并没有回收掉原来由scott授予给robisnonEXECUTEANYPROCEDURE的权限
REVOKEEXECUTEANYPROCEDUREFROMscott;
Revokesucceeded.
selectgrantee,privilege,admin_optionfromdba_sys_privs
2wheregranteein('
)andprivilege='
EXECUTEANYPROCEDURE'
3orderbygrantee;
注意:
对于使用withadminoption为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有
用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限
2.对象权限
不同的对象具有不同的对象权限
对象的拥有者拥有所有权限
对象的拥有者可以向外分配权限
ORACLE一共有种对象权限
对象权限表视图序列过程
修改(alter)√√
删除(delete)√√
执行(execute)√
索引(index)√
插入(insert)√√
关联(references)√√
选择(select)√√√
更新(update)√√
a.对象授权
GRANTobject_priv|ALL[(columns)]
ONobject
TO{user|role|PUBLIC}
[WITHGRANTOPTION];
ALL:
所有对象权限
PUBLIC:
授给所有的用户
WITHGRANTOPTION:
允许用户再次给其它用户授权
b.授予系统权限与授予对象权限的语法差异:
授予对象权限时需要指定关键字ON,从而能够确定权限所应用的对象。
对于表和视图可以指定特定的列来授权。
--对象授权示例
SHOWUSER;
USERis"
SCOTT"
GRANTSELECTONempTOrobinson;
Grantsucceeded.
GRANTUPDATE(sal,mgr)ONempTOrobinsonWITHGRANTOPTION;
--新创建一个用户john,使用robinson账户授予更新scott.emp(sal,mgr)的权限
CREATEUSERjohnIDENTIFIEDBYjohn;
Usercreated.
GRANTCREATESESSIONTOjohn;
CONNROBINSON/LION
Connected.
GRANTUPDATE(sal,mgr)ONscott.empTOjohn;
--授予scott.emp(sal,mgr)的更新权限
UPDATEscott.empSETsal=sal+100WHEREename='
--成功更新
1rowupdated.
--向数据库中所有用户分配权限
GRANTSELECTONdeptTOPUBLIC;
Grantsucceeded.
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用户拥有的角色
--查询已授予的对象权限(即某个用户对哪些表对哪些用户开放了对象权限)
SELECT*FROMuser_tab_privs_made;
--下面是scott用户开放的对象权限
GRANTEETABLE_NAMEGRANTORPRIVILEGEGRAHIE
-----------------------------------------------------------------------------------------------
PUBLICDEPTSCOTTSELECTNONO
ROBINSONEMPSCOTTSELECTNONO
--查询列上开放的对象权限
SELECT*FROMuser_col_privs_made;
GRANTEETABLE_NAMECOLUMN_NAMEGRANTORPRIVILEGEGRA
--------------------------------------------------------------------------------------------------
ROBINSONEMPSALSCOTTUPDATEYES
JOHNEMPMGRROBINSONUPDATENO
ROBINSONEMPMGRSCOTTUPDATEYES
JOHNEMPSALROBINSONUPDATENO
--查询已接受的对象特权(即某个用户被授予了哪些表上的哪些对象特权)
SELECT*FROMuser_tab_privs_recd;
OWNERTABLE_NAMEGRANTORPRIVILEGEGRAHIE
------------------------------------------------------------------------------------------------
SCOTTEMPSCOTTSELECTNONO
--查询用户已接受列的对象权限
SELECT*FROMuser_col_privs_recd;
OWNERTABLE_NAMECOLUMN_NAMEGRANTORPRIVILEGEGRA
-------------------------------------------------------------------------------------------------
SCOTTEMPMGRSCOTTUPDATEYES
SCOTTEMPSALSCOTTUPDATEYES
d.收回对象权限
使用REVOKE语句收回权限
使用WITHGRANTOPTION子句所分配的权限同样被收回
REVOKE{privilege[,privilege...]|ALL}
FROM{user[,user...]|role|PUBLIC}
[CASCADECONSTRAINTS];
CASCADECONSTRAINTS为处理引用完整性时需要
--收回权限示例
connscott/tiger;
REVOKESELECTONempFROMrobinson;
Revokesucceeded.
REVOKEUPDATE(sal,mgr)ONempFROMrobinson;
--注意此处的提示revoke的是整个表,而非列
REVOKEUPDATE(sal,mgr)ONempFROMrobinson
*
ERRORatline1:
ORA-01750:
UPDATE/REFERENCESmayonlybeREVOKEdfromthewholetable,notbycolumn
REVOKEUPDATEONempFROMrobinson;
--用户robinson的update权限被revoke,曾级联赋予john的权限也被收回,
--如下提示表、视图不存在,user_col_privs_recd中无记录
CONNjohn/john;
UPDATEscott.empSETsal=sal-100WHEREename='
UPDATEscott.empSETsal=sal-100WHEREename='
ORA-00942:
tableorviewdoesnotexist
norowsselected
如果取消某个用户的对象权限,对于该用户使用withgrantoption授予其它用户相同权限来说,
将级联删除这些用户权限
e.其它
检查DBA权限的用户
select*fromdba_role_privswheregranted_role='
DBA'
查看用户具有的系统权限:
SELECT*FROMsession_privs;
四、总结
1.使用createuser语句创建用户,alteruser语句修改用户,其语法大致相同
dropuserusername[CASCADE]会删除用户所拥有的所有对象及数据
2.系统权限允许用户在数据库中执行特定的操作,如执行DDL语句。
withadminoption使得该用户具有将自身获得的权限授予其它用户的功能
但收回系统权限时,不会从其它帐户级联取消曾被授予的相同权限
3.对象权限允许用户对数据库对象执行特定的操作,如执行DML语句。
withgrantoption使得该用户具有将自身获得的对象权限授予其它用户的功能
但收回对象权限时,会从其它帐户级联取消曾被授予的相同权限
4.系统权限与对象权限授予时的语法差异为对象权限使用了ONobject_name子句
5.PUBLIC为所有的用户
6.ALL:
对象权限中的所有对象权限
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 用户对象权限系统权限 用户 对象 权限 系统