oracle授权访问

来源:互联网 发布:免费下载电子表格软件 编辑:程序博客网 时间:2024/05/06 19:27

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授权selecttest功能:grant select on test to INTEST

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

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

三、oracle授权访问实例

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

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

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

 

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

 

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

 

这就证明hdtb2虽然连上了数据库,但是却不能访问。

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

 

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

 

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

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

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

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

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

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

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

 

哎,语言表达能力还有待大量提高啊。不知道有没有把我想的明明白白的说出来,呵呵。

原创粉丝点击