oracle中查看用户权限.docx

上传人:b****0 文档编号:12713312 上传时间:2023-04-21 格式:DOCX 页数:18 大小:22.08KB
下载 相关 举报
oracle中查看用户权限.docx_第1页
第1页 / 共18页
oracle中查看用户权限.docx_第2页
第2页 / 共18页
oracle中查看用户权限.docx_第3页
第3页 / 共18页
oracle中查看用户权限.docx_第4页
第4页 / 共18页
oracle中查看用户权限.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

oracle中查看用户权限.docx

《oracle中查看用户权限.docx》由会员分享,可在线阅读,更多相关《oracle中查看用户权限.docx(18页珍藏版)》请在冰豆网上搜索。

oracle中查看用户权限.docx

oracle中查看用户权限

oracle中查看用户权限

1.查看所有用户:

 select*fromdba_users;

 select*fromall_users;

 select*fromuser_users;

2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):

 select*fromdba_sys_privs;

 select*fromuser_sys_privs;

 

3.查看角色(只能查看登陆用户拥有的角色)所包含的权限

sql>select*fromrole_sys_privs;

4.查看用户对象权限:

 select*fromdba_tab_privs;

 select*fromall_tab_privs;

 select*fromuser_tab_privs;

5.查看所有角色:

 select*fromdba_roles;

6.查看用户或角色所拥有的角色:

 select*fromdba_role_privs;

 select*fromuser_role_privs;

 

7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)

select*fromV$PWFILE_USERS

 

 

注意:

1、以下语句可以查看Oracle提供的系统权限

selectnamefromsys.system_privilege_map

 

2、查看一个用户的所有系统权限(包含角色的系统权限)

Sql代码

1.select privilege from dba_sys_privs where grantee='DATAUSER'  

2.union  

3.select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='DATAUSER' );   

selectprivilegefromdba_sys_privswheregrantee='DATAUSER'

union

selectprivilegefromdba_sys_privswheregranteein(selectgranted_rolefromdba_role_privswheregrantee='DATAUSER');

 

--================================

--Oracle用户、对象权限、系统权限

--================================

 

一、用户与模式

用户:

对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作

SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象

SYSTEM用户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象

模式(schema):

是某个用户拥有所有对象的集合。

具有创建对象权限并创建了对象的用户称为拥有某个模式

 

注意:

创建数据库对象(视图,表等)的任一用户都拥有一个以该用户名称开头的模式,且被视为模式用户

 

二、创建及修改用户

条件:

需要具有创建用户的权限,如sys,system,sysdba,dbarole等

语法:

CREATEUSERuser

IDENTIFIED{BYpassword|EXTERNALLY|GLOBALLYASexternalname}

[DEFAULTTABLESPACEtablespace_name]

[TEMPORARYTABLESPACEtablespace_name]

[QUOTA{n{[K|M]|UNLIMITED}ONtablespace_name

QUOTA{n{[k|M]|UNLIMITED}ONtablespace_name...]

[PASSWORDEXPIRE]

[ACCOUNT{LOCK|UNLOCK}]

[PROFILE{profile_name|DEFAULT}]

 

eg:

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语句修改密码

SQL>ALTERrobinsonIDENTIFIEDBYnewpassword;

 

3.删除用户:

DROPUSERusername[CASCADE]

 

CASECADE连同用户创建的对象一并删除,如果该用户创建了对象,要加CASCADE删除,否则删除不掉

另外,不能删除当前正在与ORACLE服务器相连的用户。

4.改变用户在表空间上的配额:

ALTERUSERusernameQUOTA0ONsystem;

ALTERUSERscottQUOTAUNLIMITEDONUSERS;

ALTERUSERdogQUOTA30MONsystem;

 

5.查看用户表空间配额(dba_ts_quotas):

SQL>SELECTUSERNAME,TABLESPACE_NAME,MAX_BYTES/1024/1024"MaxMB"

2FROMdba_ts_quotasWHEREUSERNAME='SCOTT';

 

USERNAMETABLESPACE_NAMEMaxMB

--------------------------------------------------------

SCOTTSYSTEM30

6.查看特定对象下用户所拥有的对象

使用dba_objects视图

SQL>SELECTowner,object_name,object_typeFROMdba_objectsWHEREowner='SCOTT';

三、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;

SQL>GRANTEXECUTEANYPROCEDURETOscottWITHADMINOPTION;

SQL>CONNscott;--scott具有WITHADMINOPTION,故可以将EXECUTEANYPROCEDURE授予robinson

Enterpassword:

Connected.

SQL>GRANTEXECUTEANYPROCEDURETOrobinson;

Grantsucceeded.

SQL>GRANTEXECUTEANYPROCEDURETOPUBLIC;--将EXECUTEANYPROCEDURE授予所有用户

 

Grantsucceeded.

SQL>CONNsystem/redhat;--使用system为robinson授予CREATETABLE、CREATESESSION权限

Connected.

SQL>GRANTCREATETABLE,CREATESESSIONTOrobinson;

 

Grantsucceeded.

c.使用系统权限

--使用robinson具有创建会话、创建表

SQL>CREATETABLEtb1ASSELECT*FROMUSER_TABLES;--下面提示没有权限在users表空间创建对象

CREATETABLEtb1ASSELECT*FROMUSER_TABLES

*

ERRORatline1:

ORA-01950:

noprivilegesontablespace'USERS'

SQL>CONNsysassysdba;--使用sys帐户登陆并为robinson在users表空间指定配额后可以创建表tb1

Enterpassword:

Connected.

SQL>ALTERUSERrobinsonQUOTA10MONUSERS;

 

Useraltered.

 

SQL>CONNrobinson/lion;

Connected.

SQL>CREATETABLEtb1ASSELECT*FROMUSER_TABLES;

 

Tablecreated.

d.查看系统权限

dba_sys_privs--针对所有用户被授予的系统权限

user_sys_privs--针对当前登陆用户被授予的系统权限

SQL>SELECTgrantee,privilege,admin_optionFROMdba_sys_privs

2WHEREgranteeIN('SCOTT','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的权限

SQL>REVOKEEXECUTEANYPROCEDUREFROMscott;

 

Revokesucceeded.

 

SQL>selectgrantee,privilege,admin_optionfromdba_sys_privs

2wheregranteein('SCOTT','ROBINSON')andprivilege='EXECUTEANYPROCEDURE'

3orderbygrantee;

 

GRANTEEPRIVILEGEADM

-------------------------------------------------------------------------

ROBINSONEXECUTEANYPROCEDURENO

 

注意:

对于使用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,从而能够确定权限所应用的对象。

对于表和视图可以指定特定的列来授权。

--对象授权示例

SQL>SHOWUSER;

USERis"SCOTT"

SQL>GRANTSELECTONempTOrobinson;

 

Grantsucceeded.

SQL>GRANTUPDATE(sal,mgr)ONempTOrobinsonWITHGRANTOPTION;

 

Grantsucceeded.

--新创建一个用户john,使用robinson账户授予更新scott.emp(sal,mgr)的权限

SQL>CREATEUSERjohnIDENTIFIEDBYjohn;

 

Usercreated.

 

SQL>GRANTCREATESESSIONTOjohn;

 

Grantsucceeded.

SQL>CONNROBINSON/LION

Connected.

SQL>GRANTUPDATE(sal,mgr)ONscott.empTOjohn;--授予scott.emp(sal,mgr)的更新权限

 

Grantsucceeded.

SQL>UPDATEscott.empSETsal=sal+100WHEREename='SCOTT';--成功更新

 

1rowupdated.

--向数据库中所有用户分配权限

SQL>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用户拥有的角色

--查询已授予的对象权限(即某个用户对哪些表对哪些用户开放了对象权限)

SQL>SELECT*FROMuser_tab_privs_made;--下面是scott用户开放的对象权限

GRANTEETABLE_NAMEGRANTORPRIVILEGEGRAHIE

-----------------------------------------------------------------------------------------------

PUBLICDEPTSCOTTSELECTNONO

ROBINSONEMPSCOTTSELECTNONO

--查询列上开放的对象权限

SQL>SELECT*FROMuser_col_privs_made;

 

GRANTEETABLE_NAMECOLUMN_NAMEGRANTORPRIVILEGEGRA

--------------------------------------------------------------------------------------------------

ROBINSONEMPSALSCOTTUPDATEYES

JOHNEMPMGRROBINSONUPDATENO

ROBINSONEMPMGRSCOTTUPDATEYES

JOHNEMPSALROBINSONUPDATENO

--查询已接受的对象特权(即某个用户被授予了哪些表上的哪些对象特权)

SQL>SELECT*FROMuser_tab_privs_recd;

 

OWNERTABLE_NAMEGRANTORPRIVILEGEGRAHIE

------------------------------------------------------------------------------------------------

SCOTTEMPSCOTTSELECTNONO

 

--查询用户已接受列的对象权限

SQL>SELECT*FROMuser_col_privs_recd;

 

OWNERTABLE_NAMECOLUMN_NAMEGRANTORPRIVILEGEGRA

-------------------------------------------------------------------------------------------------

SCOTTEMPMGRSCOTTUPDATEYES

SCOTTEMPSALSCOTTUPDATEYES

d.收回对象权限

使用REVOKE语句收回权限

使用WITHGRANTOPTION子句所分配的权限同样被收回

 

REVOKE{privilege[,privilege...]|ALL}

ONobject

FROM{user[,user...]|role|PUBLIC}

[CASCADECONSTRAINTS];

 

CASCADECONSTRAINTS为处理引用完整性时需要

 

--收回权限示例

SQL>connscott/tiger;

Connected.

SQL>REVOKESELECTONempFROMrobinson;

 

Revokesucceeded.

 

SQL>REVOKEUPDATE(sal,mgr)ONempFROMrobinson;--注意此处的提示revoke的是整个表,而非列

REVOKEUPDATE(sal,mgr)ONempFROMrobinson

*

ERRORatline1:

ORA-01750:

UPDATE/REFERENCESmayonlybeREVOKEdfromthewholetable,notbycolumn

 

 

SQL>REVOKEUPDATEONempFROMrobinson;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1