首页 > 代码库 > Oracle权限设置

Oracle权限设置

oracle的用户安全管理主要有权限和角色

当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,则必须为其授予系统的权限。

如果用户要访问其他方案的对象,则必须为其授予对象的权限,为了简化权限的管理,可以使用角色

 

权限:


这里是执行特定的命令和访问对象的权利.括系统和对象权限 


系统权限


 是执行特定类型的sql命令.主要是对用户来说的.分类

  • DBA 全部权限.可以创建数据库结构
  • Resource:只可以创建实体,不可以创建数据库结构
  • Connect:只能登陆,不可创建实体和数据库结构

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

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

 

系统权限授权命令:

 

[系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)]

授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;

[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收]

例:

SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect,resource to user50;

查询用户拥有哪里权限:

SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs;

删除用户:SQL> drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除

注意:在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授予其他的用户

或是角色。

 

例如

//创建用户

sql>create user kenidentified by m123;
sql>create user tomidentified by m123

给用户ken授权

sql>grant create session,create table to ken with admin option;
sql>grant create view to ken;

给用户tom授权

我们可以通过ken给tom授权,因为with admin option是加上的。当然也可以通过DBA给tom授权,这里我们就用ken给tom授权。


sql>grant createsession,create table to tom with admin option;
sql>grantcreate view to tom;——这个是不可以的,因为Ken没有该权限的下放权限。

回收系统权限

 

一般情况下,回收系统权限是dba来完成的,如果其他的用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限

的选项(with admin option)。回收系统权限使用revoke来完成。

当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限不是级联回收的。

执行以下语句:

sql>revoke create session from ken;

说明:DBA执行了该语句后回收了Ken的登录权限后,Ken自然就不能再登录了,有Ken下放的该权限所有者tom还是可以正常

登录的。


对象权限:


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

 

户可以直接访问自己方案的对象。但是如果要访问别的方案的对象,则必须具有对象的权限。比如Smith用户要访问scott.emp

表(scott:方案,emp:表),则必须在scott.emp表上具有对象的权限。

 

常用的有  

 

增删改查,改(数据的修改和表结构的修改),索引,执行(execute),all等

 

grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限
grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限
grant create table to zhangsan;//授予创建表的权限
grante drop table to zhangsan;//授予删除表的权限
grant insert table to zhangsan;//插入表的权限
grant update table to zhangsan;//修改表的权限
grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)

当然了也包括with授权,权限回收操作。

 

小结:


刚开始的时候也没看oracle的任何语言就去操作了,感觉无从下手,很难学么。但是当查看了oracle的基本操作后,与sql

的命令大相径庭。只是多了一些命令授权,也是很有意思的。只是在sql中我们没有这样写。因为sql中带有客户端替我们做了这些

工作。所以一些常用的命令我们还是亲自多多写写吧。刚开始熟悉环境还是很有用处的。