oracle数据库grant用法,Oracle初学者之grant授权

Oracle菜鸟之grant授权

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

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

privilege:

select:查询

insert:插入

update:更新

delete:删除

rule:

all:所有

grant select,insert,update on tablename to public;

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

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

object:

table:表

view:视图

sequence:序列

index:索引

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

public:对所有用户开放权限

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

username:对指定用户开放权限

2、给数据库用户授权(对象多为系统表,如dba可以查看的表)

grant dba to username;

不给用户授予dba权限,用户将无法查看系统表,例如v$datafile,dba_data_files等

revoke dba from username;//对用户username回收dba权限

注:如果使用pl/sql登录,授予dba权限后,需要重新登陆(初始理解,错误)

后经验证,不需要重新登陆,只需要重新打开一个会话就可以

理解:数据库的所有权限操作,都是以会话为单位,如果当前会话执行时没有dba权限,即便是已经重新赋予了权限,在当前会话中也是不起作用的

而如果当前会话有dba权限,而后台取消了权限,那么当前会话的dba权限也不会消失

grant connect to username;

不给新建用户授予connect权限,新建用户无法通过SID或SERVICE_NAME连接数据库实例,即无法登录数据库

revoke connect to username;//对用户username回收connect权限

grant resource to username with admin option;

grant unlimited tablespace to username with admin option;

不给新建用户授予resource权限,新建用户无法创建表

revoke resource from username;//对用户回收resource权限

3、查看指定用户有哪些系统权限

select * from dba_role_privs where grantee=upper('username');

4、查看指定用户有哪些对象权限

select * from dba_tab_privs where grantee=upper('username');

可能遇到问题:

1、当在一个新建数据库用户上创建表失败时,可以查看系统权限

在当前用户执行select * from dba_role_privs where grantee=upper('username');如果不能执行(提示表或视图不存在),说明没有dba权限

解决方法:可以登录sys账户赋予dba权限

登录sys:sqlplus / as sysdba

给username赋权限:grant dba to username;

也可以直接登录sys账户,select * from dba_role_privs where grantee=upper('username'),如果granted_role的值没有dba,说明没有dba权限

权限相关的查询和赋予:

所有权限的赋予均是在有赋予权限的用户下进行,此处授权用户都是sys用户

1、select * from dba_role_privs where grantee=upper('luyongpeng');

其中,admin_option是通过在授权时添加with admin option 选项定义

grant dba to luyongpeng with admin option;//admin_option为YES,如果不加with admin option 选项,则admin_option为NO

使用grant dba to luyongpeng;无法覆盖之前的权限

但grant dba to luyongpeng with admin option 可以覆盖grant dba to luyongpeng;的权限

2、select * from dba_sys_privs where grantee=upper('luyongpeng');

该权限可以通过执行grant dba to luyongpeng;时自动加上,但admin_option默认为NO

可以通过grant unlimited tablespace to luyongpeng with admin option;将admin_option修改为YES

当执行revoke dba from luyongpeng;时,系统会同时回收dba权限和unlimite tablespace权限

如果想保留dba权限,但回收unlimited tablespace权限,可以通过revoke unlimited tablespace from luyongpeng;实现

090001197.png

3、select * from dba_tab_privs where grantee=upper('luyongpeng');

该权限表现了当前用户对owner的哪些表具有何种操作权限,并且grantable字段值YES表明了luyongpeng用户可以继续对其他用户开放signtest表的权限

090001198.png

执行grant insert on signtest to luyongpeng with grant option;

grant delete on signtest to luyongpeng with grant option;

后,重新查询dba_tab_privs表信息如下,可以看到当加上with grant option选项后,GRANTABLE字段值为YES

090001199.png

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值