oracle怎么赋予权限 oracle 给用户赋权限

oracle创建用户后一般给什么权限

具体需要哪些权限需要看用户的实际需要。我们要在有最高权限的system用户创建用户,再赋予新建用户权限,只有给新建用户权限,新建用户才能干什么。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了会宁免费建站欢迎大家使用!

一、权限分为系统权限及对象权限。

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

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

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

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

对于普通用户:授予connect, resource权限。

对于DBA管理用户:授予connect,resource, dba权限。

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

CREATE SESSION,创建会话,才可以打开界面

CREATE TABLE,创建表,可创建空表,但没有权限插入数据

CREATE SEQUENCE创建序列

CREATE VIEW,创建视图

扩展资料

一、赋权方式,有两种赋予用户权限的方式,

1、对用户赋权

一对一的赋予新建用户权限,这样赋予新建用户权限比较有活性,如果新建用户多了,就比较麻烦。

2、对角色赋权

先创建角色,将权限先赋给角色代理,最后将角色代理的权限赋新建用户,这样比较死板,但是可以同时赋给很多用户。

参考资料

Oracle官网-Grant

关于ORACLE的权限赋予问题

我们经常谈及Oracle的权限 比如Connect DBA resource sysdba select any table select_catelog_role这样一些权限 让我们眼花缭乱的 那么如何来区分这些种类繁多的privilege中不至于眼迷离呢 这个文章将会对你在这方面的了解起到帮助

以上我们看到的这些权限 都是可以通过grant语句来进行权限赋予 同时也可以用过revoke来进行权限收回的操作的 但是 他们虽然都在grant里出现 但是有各自有着本质的不同

oracle里的权限有两种权限 系统权限和对象权限 所谓系统权限 就是oracle里已经hardcode写死的权限 这些权限 我们是不能自己去扩展的 比如上面提到的select any table create any table create table等 这里的权限已经在oracle里全部规定好了

我们可以通过查看system_privilege_map这个数据字典表来查看所以的oracle系统内置的权限

SQL select * from system_privilege_map;

PRIVILEGE NAME                                       PROPERTY

ALTER SYSTEM                                     

AUDIT SYSTEM                                     

CREATE SESSION                                   

ALTER SESSION                                    

RESTRICTED SESSION                               

这里就是所有的内置的系统权限了 其实如果有开发过权限系统的经验的话 对这里的这个概念 可以理解为function permission 也就是你可以进行哪些操作

这里特别提到一个另外的知识点 有网游朋友问过我 create any table和create table有什么区别 create table只能老老实实的给自己的scheam创建表 而不能以create table otherschema tablename这样的方式给其他的schema创建表 额外提到这点 有很多朋友这块还是模糊的

oracle通过数据字典表dba_sys_privs这个表来记录user被赋予的系统权限 比如

我们现在执行

SQLgrant select any table to test ; 把select any table的权限赋予test 这个用户

Grant succeeded

SQL select * from dba_sys_privs where grantee = TEST ;

GRANTEE                        PRIVILEGE                                ADMIN_OPTION

TEST                           SELECT ANY TABLE                         NO

这里就可以查询到这个记录了 admin_option表示的是是否有把当前这个系统权限grant给其他用户的意思 yes 表示test 除了自己有这个权限 还可以把这个权限赋予其他用户 N就是没有grant的权限了

我们可以用一下语句试试

SQL grant select any table to test with admin option;

Grant succeeded

在来看看刚才的记录

GRANTEE                        PRIVILEGE                                ADMIN_OPTION

TEST                           SELECT ANY TABLE                         YES

现在test 就可以赋予select any table给别的用户了

下面我们看看object permission 其实这里已经名字就可以区分开了 这里是针对于特定的对象的权限 上面的系统权限是限定了可以操作的功能 而object permission就更细化了 具体到了莫个对象你可以操作的功能的权限

比如 A用户建立了一个TableA表 现在为了让B用户可以看到A这个对象 我们就可以把A table的select权限 进行赋予 这里的A table上的select权限就是一个对象权限

除了select 还有update delete insert alter drop index references这样正对于对象的权限

除了可以给表对象指定对象权限外 view sequence procedure function package triggger MV等这些oracle里的对象都可以进行对象的权限指定

对于对象权限来说 由于对象权限完全是动态的 在对一个对象进行grant的时候 才能看到具体的对象权限 所以对象权限是不像system privilege那样有一个表来描述的 只有一个表来记录用户和这个用户对于的对象权限的关系表 这个表就是dba_tab_privs;

这里这个名字比较容易让人误会为只有table的对象权限 其实不然 这里其他类型的对象的对象权限也会记录进来

实验一下 还是刚才的test 用户 我现在把对象dbms_xplan的execute的权限给他 dbms_xplan这个有些朋友可能不熟悉 这是执行计划有关的一个对象 朋友们如果没有安装执行计划的包 可以用dbms_output对象做实验

SQLgrant execute on dbms_xplan to test ;

SQLgrant execute on dbms_output to test ;

SQL select * from dba_tab_privs where grantee = TEST ;

GRANTEE                        OWNER                          TABLE_NAME                     GRANTOR                        PRIVILEGE                                GRANTABLE HIERARCHY

TEST                           SYS                            DBMS_XPLAN                     SYS                            EXECUTE                                  NO        NO

TEST                           SYS                            DBMS_OUTPUT                    SYS                            EXECUTE

这里注意和fuanction 不同的 这里有一个GRANTABLE的字段 意味和上面admin option一样的作用

不过这里的sql不同了

SQLgrant execute on dbms_xplan to test with grant option;

这里是oracle里的权限了

不过有的人可能会问道 咦 你是不是漏掉了 不是我们还可以

grant connect resource dba to username;吗 那她们都是什么权限呀

在这里就要注意了 这里的connct resource dba都不是权限 而是一个role 角色 一个角色是 个或者多个系统权限或者对象权限的集合 是便于我们管理用户赋权而演化而来的 这里的create role和赋予role权限我们就不详谈了 朋友们可以自己查一查相关资料 role是我们可以动态建立的 建立的role可以用grant来赋予权限 或者把一个role赋予另一个role

我们可以通过dba_roles这个表来查询系统里所有的role

SQL select * from dba_roles;

ROLE                           PASSWORD_REQUIRED

CONNECT                        NO

RESOURCE                       NO

DBA                            NO

SELECT_CATALOG_ROLE            NO

EXECUTE_CATALOG_ROLE           NO

DELETE_CATALOG_ROLE            NO

我们可以把role的赋予一个用户

比如

SQLgrant select_catalog_role to test ;

我们可以通过dba_role_privs来查询相关用户的role的赋予 比如

SQL select * from dba_role_privs where grantee = TEST ;

lishixinzhi/Article/program/Oracle/201311/16827

oracle中怎样把一个用户的所有table的select权限授给另外一个用户

1、双击桌面sqldeveloper软件图标启动软件。

2、新建数据库连接,填写登录数据库信息并选择相应角色进行登录。

3、登录成功后先查询出hr用户下所有的表名,可直接通过dba_tables来进行查询。

4、把查询权限赋给测试用户的方法有两种,一种为当用户下的表比较少的情况下可以直接通过grant select/delete/update on hr.table-name to cem。

5、授权成功后使用测试用户进行登录即可对授权过查询权限的表进行访问。


本文题目:oracle怎么赋予权限 oracle 给用户赋权限
本文链接:http://bzwzjz.com/article/hpeidj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 做网站设计 成都商城网站建设 营销网站建设 企业网站建设 高端网站设计推广 成都网站建设 网站制作 成都网站设计 宜宾网站设计 网站建设费用 成都品牌网站设计 营销型网站建设 成都网站制作 成都响应式网站建设公司 成都网站建设公司 成都网站建设公司 网站建设方案 企业网站建设 成都网站建设 成都网站设计公司 重庆网站建设