Oracle授权访问

一、为什么要使用oracle授权访问?

Oracle授权访问控制特定用户只能访问数据库指定访问的内容和权限。

例如,系统A需要访问系统B的数据库erpdev中的表test,如果我们将系统B的访问数据库用户提供给系统A使用,那么系统A将具有控制系统B数据库erpdev的权限,这显然是系统B不想看到的安全隐患。所以,可以通过oracle的授权用户来控制系统A访问系统B的权限,来排除这种隐患。例如,用oracle授权访问功能控制系统A只能查询数据库erpdev中的test表,如果用户试图向test表中插入数据,或者修改test表中的数据,那么oracle将返回错误信息,用户操作失败。其实这就是用oracle授权访问控制了某个用户访问数据库的权限。

二、Oracle授权访问语句(假设被授权用户名INTEST)

1、  给INTEST授权select表test功能:grant select on test to INTEST

2、  给INTEST授权update表test功能:grant update on test to INTEST

3、  给INTEST授权delete表test功能:grant delete on test to INTEST

三、oracle授权访问实例

假设将给某程序提供访问某数据库指定表的需求,现在用oracle授权访问来实现。

1、先建立用户hdtb2,如下图:角色可以不用设置,并且一定不能给用户设定 “DBA”角色!只给hdtb2保留CONNECT即可,或者新建角色付给hdtb2用户。

注意,我在新建hdtb2这个用户时选择的表空间是SYSDATE或者USERS,而并不是将要给hdtb2授权的表空间。

 

Oracle授权访问 - gideshi - gideshi的博客

此时,查看hdtb2用户“已授予的对象权限”时是空的,也就是说并没有授予用户对象权限,如下图

 

Oracle授权访问 - gideshi - gideshi的博客

2、在现在还未给hdtb2用户设置oracle授权访问时,用java程序测试一下hdtb2用户访问数据库提示的错误:

 

Oracle授权访问 - gideshi - gideshi的博客这就证明hdtb2虽然连上了数据库,但是却不能访问。

3、用原系统用户在PL/SQL中给hdtb2用户设置oracle授权访问,语句如下:设置hdtb2删除t_prd_order_t_2表中数据的授权(grant delete on t_prd_order_t_2 to hdtb2)

 

Oracle授权访问 - gideshi - gideshi的博客

执行完毕后再查看hdtb2用户“已授予的对象权限”时,如下图所示:

 

Oracle授权访问 - gideshi - gideshi的博客

这说明用户hdtb2已经具有了删除t_prd_order_t_2表中数据的功能。

4、oracle授权访问设置完毕后,用java程序测试授权是否有效,如下图:

Oracle授权访问 - gideshi - gideshi的博客

怪事了L怎么还不行呢?delete from t_prd_order_t_2?呵呵,相信看到这条语句就知道问题出在哪里了。继续……

Oracle授权访问 - gideshi - gideshi的博客

吼吼,执行通过了,delete from hgvs_hdtb.t_prd_order_t_2,“hgvs_hdtb”就是我数据库的用户,并且刚才也是在用“hgvs_hdtb”这个用户登录PL/SQL后给hdtb2用户加的oracle授权,千万别忘了!

再测试一下,将delete换成select看看,执行后,如下图:

Oracle授权访问 - gideshi - gideshi的博客

哈哈,看来控制的还不错呀。

5、通过以上步骤后,就可以用hdtb2这个用户来删除t_prd_order_t_2中的数据了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值