oracle数据库的权限问题

限分为系统权限(system privilege)和对象权限(object privilege)

所谓系统权限是指用户对数据库的相关权限。允许用户在数据库中执行特定操比如执行DDL。常用的系统特权:

create session:连接到数据库上

create sequence:创建序列。序列是一系列数字,通常用来填充主键值。

create synonym:创建同名对象。同名对象用来引用其它模式中的表。

create table

create any table

drop table

drop any table

create procedure

execute any procedure

create user

drop user

create view

授权

向用户授予系统特权,如果后面使用with admin option选项,则表示所授予的用户可以把这种特权再授予其它用户。

GRANT EXECUTE ANY PROCEDURE TO steve WITH ADMIN OPTION

CONN steve/button

GRANT EXECUTE ANY PROCEDURE TO gail;

将一种特权授予PUBLIC,可以将特权授予所有的用户。

CONN system/manager

GRANT EXECUTE ANY PROCEDURE TO PUBLIC;

检查授予用户的系统特权

通过查询user_sys_privs可以检索某个用户具有哪些系统特权.

SELECT * FROM user_sys_privs

撤权

REVOKE EXECUTE ANY PROCEDURE FROM steve

在撤销steve用户的execute any procedure特权时—steve已经将这种特权又授权了gail用户,gail用户仍然会保留这些特权。

所谓对象权限是指用户对其它用户的数据对象操作的权限。比如对表执行DML。常用的对象特权:

selectupdateinsertdeleteexecuteall (前四种的总称)

授权

GRANT SELECT ,INSERT,UPDATE ON store.products TO steve

下面这个例子将对last_namesalary列的UPDATE特权授予steve用户.

GRANT UPDATE(last_name,salary) ON store.products TO steve

此处可以使用WTIH GRANT OPTION选项

检查已授予的对象特权通过查询user_tab_privs_made可以检查某个用户对哪些表向其它用户开放了哪些对象特权。

SELECT *

FROM user_tab_privs_made

WHERE table_name=’PRODUCTS’

通过查询user_col_privs_made可以检索某个用户对哪些列开放了哪些特权。

SELECT *

FROM user_col_privs_made

检索已接受的对象特权

通过查询user_tab_privs_recd可以检查某个用户被授予了哪些表上的哪些对象特权。

通过查询user_col_privs_recd可以检查某个被授予了哪些列上的对象特权。

注意:

当所授予的权是系统特权时,并且使用WITH ADMIN OPTION选项使该系统特权向下传递,当撤销授予者的系统特权时,其所向下授予的系统特权不在撤销。

当授予的权是对象特权时,并且使用WITH GRANT OPTION选项使该对象特权向下传递,当撤销授予者的系统特权时,其所向下授予的对象特权一并收回。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值