当前位置:首页 » 密码管理 » oracle表的访问权限

oracle表的访问权限

发布时间: 2023-05-19 06:52:00

‘壹’ ORACLE数据库中的权限和角色

ORACLE数据库中的权限和角色

Oracle数据库是一种大型关系型的数据库,我们知道当使用一个数据库时,仅仅能够控制哪些人可以访问数据库,哪些人不能访问数据库是无法满足数据库访问控制的。DBA需要通过一种机制来限制用户可以做什么,不能做什么,这在Oracle中可以通过为用户设置权限来实现。权限就是用户可以执行某种操作的权利。而角色是为了方便DBA管理权限而引入的一个概念,它实际上是一个命名的权限集合。

1 权限

Oracle数据库有两种途径获得权限,它们分别为:

① DBA直接向用户授予权限。

② DBA将权限授予角色(一个命名的包含多个权限的集合),然后再将角色授予一个或多个用户。

使用角色能够更加方便和高效地对权限进行管理,所以DBA应该习惯于使用角色向用户进行授予权限,而不是直接向用户授予权限。

Oracle中的权限可以分为两类:

•系统权限

•对象权限

1.1 系统权限

系统权限是在数据库中执行某种操作,或者针对某一类的对象执行某种操作的权利。例如,在数据库中创建表空间的权利,或者在任何模式中创建表的权利,这些都属于系统权限。在Oracle9i中一共提供了60多种权限。

系统权限的权利很大,通常情况下:

① 只有DBA才应当拥有alter database系统权限,该权限允许用户对数据库物理结构和可用性进行修改。

② 应用程序开发者一般应该拥有Create Table、Create View和Create Type等系统权限,用于创建支持前端的数据库模式对象。

③ 普通用户一般只具有Create session系统权限(可以通过Connection角色获得),只有Create Session系统权限的用户才能连接到数据库

④ 只有具有Grant Any PRivilege系统权限用户,或者获取了具有With Admin Option选项的系统权限的用户,才能够成为其它用户授予权限。

1.2对象权限

对象权限是针对某个特定的模式对象执行操作的权利。只能针对模式对象来设置和管理对象权限。

对于模式对象:表、视图、序列、存储过程、存储函数、包都可以对象设置权限。不同类型模式对象具有不同的对象权限。比如,表、视图等对象具有查询(Select)、修改(Update)、删除(Delete)等对象权限,而存储过程、存储函数等对象则具有执行(Execute)等对象权限。

但是并不是所有的模式对象都可以设置对象权限。比如簇、索引、触发器以及数据库链接等模式就不具有对象权限。这些模式对象的访问控制是通过相应的.系统权限来实现的,比如,要对索引进行修改,必须拥有Alter Any Index系统权限。

用户自动拥有他的模式中所有对象的全部对象权限,他可以将这些对象权限授予其他的用户或角色。比如,Test1用户创建了一个表Table1,在没有授权的情况下,用户Test2不能查询、修改、删除这个表。如果Test1将ETP表的Select对象权限授予了Test2,则该用户就可以查询Table1表了。如果在为其它用户授予对象权限时用了With Grant Option选项,被授予权限的用户还可以将这个权限在授予其他用户。

2 角色

2.1角色的概念

角色就是多个相关权限的命名集合。通过角色来进行对用户授予权限,可以大大简化DBA的工作量。比如,处于统一部门中的30多个用户都需要访问数据库中的一系列表,DBA可以将这些表的中合适的对象权限授予一个角色,然后在把这个角色授予这些用户,这样进行操作要比为没有用户进行授权要便捷多了,而且要对这些用户的权限进行统一修改,只需要修改角色的权限即可。

2.2角色的优点

通过角色为用户授予权限,而不是直接向各个用户授权,具有以下优点:

•简化权限管理 DBA将用户群分类,然后为每一类用户创建角色,并将该角色授予这类用户所需要的权限,最后在将改角色授予该类中的各个用户。这样不仅简化了授权操作,而且当这类用户的权限需求发生改变时,只需要把角色的权限进行改动,而不必修改每一位用户的权限。

•动态权限管理 角色可以被禁用或激活。当角色被禁止使用时,拥有该角色的用户不再拥有授予改角色的权限了。这样就可以对多个用户的权限进行动态控制了。

•灵活的编程能力 角色是存储在数据字典中的,并且可以为角色设置口令。这样就能够在应用程序中对角色进行控制。比如禁用或者激活等操作。

下面以Oracle9i为例,给出具体的实现用户授权:

(1)设定各种角色,及其权限

CREATE ROLE checkerrole DENTIFIEDBYxm361001;

CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;

GRANT SELECT,UPDATE ON

account.paytable TO checkerrole;

GRANT CONNECT TO defaultrole;

(2)创建用户

CREATE USER xiaoli IDENTIFIEDBY xiaoli;

(3)授权

GRANT checkerrole TO xiaoli;

GRANT defaultrole TO xiaoli;

(4)设定用户缺省的角色

ALTER USER xiaoli DEFAULTROLE defaultrole;

(5)注册过程

CONNECT xiaoli/xiaoli@oracle

此时用户只有其缺省角色的权限。

(6)激活角色

SET ROLE checkerrole IDENTIFIEDBY xm361001;

----操作成功后,xiaoli拥有checkerrole的权限。

----这里的角色和口令是固定的,在应用系统中可以由应用管理人员自行设置则更为方便安全

;

‘贰’ Oracle用户权限表的管理方法

我们将通过介绍命令的方式 谈谈Oracle用户权限表的管理方法 希望对大家有所帮助岩祥蠢

我们将从创建Oracle用户权限表 开始谈起 然后讲解登陆等一般性动作 使大家对Oracle用宴埋户权限表有个深入的了解

一 创建

sys;//系统管理员 拥有最高权限

system;//本地管理员 次高权限

scott;//普通用户 密码默认为tiger 默认未解锁

sys;//系统管理员 拥有最高权限

system;//本地管理员 次高权限

scott;//普通用户 密码默认为tiger 默认未解锁

二 登陆

sqlplus / as sysdba;//登陆sys帐户

sqlplus sys as sysdba;//同上

sqlplus scott/tiger;//登陆普通用户scott

sqlplus / as sysdba;//登陆sys帐户

sqlplus sys as sysdba;//同上

sqlplus scott/tiger;//登陆普通用户scott

三 管理用户

create user zhangsan;//在管理员帐户下 创建用户zhangsan

alert user scott identified by tiger;//修改密码

create user zhangsan;//在管理员帐户下 创建用户zhangsan

alert user scott identified by tiger;//修改密码

四 授予权限

默认粗陪的普通用户scott默认未 解锁 不能进行那个使用 新建的用户也没有任何权限 必须授予权限

/*管理员授权*/

grant create session to zhangsan;//授予zhangsan用户创建session的权限 即登陆权限

grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限

grant create table to zhangsan;//授予创建表的权限

grante drop table to zhangsan;//授予删除表的权限

grant insert table to zhangsan;//插入表的权限

grant update table to zhangsan;//修改表的权限

grant all to public;//这条比较重要 授予所有权限(all)给所有用户(public)

/*管理员授权*/

grant create session to zhangsan;//授予zhangsan用户创建session的权限 即登陆权限

grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限

grant create table to zhangsan;//授予创建表的权限

grante drop table to zhangsan;//授予删除表的权限

grant insert table to zhangsan;//插入表的权限

grant update table to zhangsan;//修改表的权限

grant all to public;//这条比较重要 授予所有权限(all)给所有用户(public)

oralce对权限管理比较严谨 普通用户 之间也是默认不能互相访问的 需要互相授权

/*oralce对权限管理比较严谨 普通用户之间也是默认不能互相访问的*/

grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

grant drop on tablename to zhangsan;//授予删除表的权限

grant insert on tablename to zhangsan;//授予插入的权限

grant update on tablename to zhangsan;//授予修改表的权限

grant insert(id) on tablename to zhangsan;

grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限 注意 只能是insert和update

grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限

/*oralce对权限管理比较 严谨 普通用户之间也是默认不能互相访问的*/

grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

grant drop on tablename to zhangsan;//授予删除表的权限

grant insert on tablename to zhangsan;//授予插入的权限

grant update on tablename to zhangsan;//授予修改表的权限

grant insert(id) on tablename to zhangsan;

grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限 注意 只能是insert和update

grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限

五 撤销权限

基本语法同grant 关键字为revoke

基本语法同grant 关键字为revoke

六 查看权限

select * from user_sys_privs;//查看当前用户所有权限

select * from user_tab_privs;//查看所用用户对表的权限

select * from user_sys_privs;//查看当前用户所有权限

select * from user_tab_privs;//查看所用用户对表的权限

七 操作表的用户的表

/*需要在表名前加上用户名 如下*/

select * from zhangsan tablename

/*需要在表名前加上用户名 如下*/

select * from zhangsan tablename

八 权限传递

即用户A将权限授予B B可以将操作的权限再授予C 命令如下

grant alert table on tablename to zhangsan with admin option;//关键字 with admin option

grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似

grant alert table on tablename to zhangsan with admin option;//关键字 with admin option

grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似

九 角色

角色即权限的集 合 可以把一个角色授予给用户

create role myrole;//创建角色

grant create session to myrole;//将创建session的权限授予myrole

grant myrole to zhangsan;//授予zhangsan用户myrole的角色

drop role myrole;删除角色

/*但是有些权限是不能授予给角色的 比如unlimited tablespace和any关键字*/

lishixin/Article/program/Oracle/201311/17543

‘叁’ oracle 怎么查看表的权限

方法1:
根据指定用户名获唤历得对应用户所盯尺拥有权限的表
SELECT table_name, owner FROM all_tables WHERE owner = 'SCOTT';

方法2:
通过tab视图获得当前登录用户所有表和视图,通过tabletype过滤获和则搜得所有表
SELECT * FROM tab WHERE tabtype = 'TABLE';

‘肆’ oracle 怎么查看表的权限

没有dba的权限,只能查看你自己的表空间的大小等闷判.
只能查看v$以user开头的视图,也就是你自己用户下的一些相关的表空间,角色,对象等.
例如楼上列举的哪些
我给你解释一下他的哪些意思吧
select
*
from
user_tablespaces;就是查看你自己能悄数访问的表空间
select
*
from
user_tab_partitions;查看你自己用户下表分区
select
*
from
user_extents;查看你自己用户下的区
select
*
from
user_indexes;查看你自启罩首己用户所能访问的索引
select
*
from
user_ind_partitions;
查看自己用户下的索引分区

‘伍’ oracle如何查看用户和权限

在 Oracle 中查看用户和它们的权限,可以使用以下数据改带隐字典视图:

  • ALL_USERS:显示当前用户可以访问的所有数据库用户的信息。

  • USER_USERS:显示当前用户拥有的数据库用户的信息。

  • DBA_USERS:显示数据库中所有数据库用户的信息(仅供 DBA 访问)。

  • 要查看特定用户的权限,您可以使用以下视图:

  • ALL_TAB_PRIVS:显示当前用户可以核厅访问的所有数据表的行升权限。

  • USER_TAB_PRIVS:显示当前用户拥有的数据表权限。

  • DBA_TAB_PRIVS:显示数据库中所有数据表的权限(仅供 DBA 访问)

‘陆’ 赋予oracle数据库中某一用户表权限的问题

开通其中2张表的查询权限,方法如下:饥衫

grant select on bas_checkcycle to jdc;这个是整个语句。

语句分析:

grant select on bas_checkcycle to jdc;

这个颜色为执行语句。

这个颜色是数据表。

这个颜色是用户;就是需要权限的用户。

下面这个是查看,更新,删除,增加的权限都开启。

grant select,update,delete,insert on UserTagPool to [app_webservice];

grant select,update,delete,insert on UserTagPoolMap to [app_webservice];

(6)oracle表的访问权限扩展阅读

Oracle权限管理

权限分类:

系统权限:系统规定用户使用数据烂含腔库的权限。(系统权限是对用户而言)。

实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

系统权限分类:

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以老枣创建实体,不可以创建数据库结构。

‘柒’ oracle的grant语句,一次只能授权一张表的访问权限吗

grant语句,一次只能对一个对象进行赋权;不能同时对两个表进行赋权;但可以同时赋权多个不同的权限;如,grant select,update,insert on test_null to sys;

举例实践如下:

1、多表同时赋权,会产生报错信息。

(7)oracle表的访问权限扩展阅读

1、给数据库用户授权(对象为用户表)

GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}

privilege包含,select:查询、insert:插入、update:更新、delete:删除、all:所有

2、grant select,insert,update on tablename to public;

给所有用户授予查春绝询、插入、更新tablename表的权限

revoke select,insert,update on tablename from public;//收回所有用户查询、插入、更新tablename表的权限

object包含,table:敬或表、view:亮森伍视图、sequence:序列、index:索引

3、grant select,insert,update on tablename,viewname,sequencename,indexname to public;

1)public:对所有用户开放权限

2)GROUP groupname:对该组所有用户开放权限

3)username:对指定用户开放权限

参考资料

ORACLE官网-ORACLE GRANT

‘捌’ oracle的grant语句,一次只能授权一张表的访问权限吗

grant语句,一次只能对一个对象进行赋权;不能同时对两个表进行赋权;但可以同时赋权多个不同的权限;如,grant select,update,insert on test_null to sys;

举例实践如下:

1、多表同时赋权,会产生报错信息。

(8)oracle表的访问权限扩展阅读

1、给数据库用户授权(对象为用亮森伍户表)

GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}

privilege包含,select:查询、insert:插入、update:更新、delete:删除、all:所有

2、grant select,insert,update on tablename to public;

给所有用户授予查询、插入、更新tablename表的权限

revoke select,insert,update on tablename from public;//收回所有用户查询、插入、更新tablename表的权春绝限

object包含,table:表、view:视图、sequence:序列、index:索引

3、grant select,insert,update on tablename,viewname,sequencename,indexname to public;

1)public:对所有用户开放权限

2)GROUP groupname:对该组所有用户开放权限

3)username:对指定用敬或户开放权限

参考资料

ORACLE官网-ORACLE GRANT

‘玖’ oracle数据库,只有访问视图权限,没有访问表权限

视图里边的表也是该用户下的,去掉表的授权,视图不受影响;如果里边的表是其它用户,需要 with grant option;
sqlplus / as sysdba
create table t1(f1 number);
create view v1 as select * from t1;
create user cc identified by wcycc;
grant connect to cc;
grant select on v1 to cc;
conn cc/wcycc
select * from sys.v1;

‘拾’ oracle无法访问dba表

Oracle的DBA表空则雹间是特殊的表空间,它仅仅是内置的数据库的字典表的容器。因此无法使用sqlplus编辑器或其它任何sql语句查看其中的表改盯正内容,也无法直接访问它们。另外,由于dba表空间是只读的,因此无法向它添加任何表,也无法在其中创建新的表。但是,核悔Oracle提供了一些内部视图,用户可以通过这些内部视图来查看存储在dba表空间中的表和信息,以及运行一些必要的操作。

热点内容
什么安卓手机可以用个两三年 发布:2025-02-08 11:02:37 浏览:966
安卓收银软件哪个好用 发布:2025-02-08 11:01:44 浏览:170
实现秘闻存储的方法 发布:2025-02-08 10:23:33 浏览:168
怎么在微信发文件夹 发布:2025-02-08 10:09:45 浏览:795
cryengine源码 发布:2025-02-08 09:50:58 浏览:394
aardio可以反编译吗 发布:2025-02-08 09:50:53 浏览:484
公司营业执照密码是什么 发布:2025-02-08 09:47:56 浏览:855
体验脚本 发布:2025-02-08 09:46:15 浏览:691
医学生需要什么配置的笔记本 发布:2025-02-08 09:45:34 浏览:772
骚扰电话数据库 发布:2025-02-08 09:45:34 浏览:180