oracle的用户安全管理主要有权限和角色
当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,则必须为其授予系统的权限。
如果用户要访问其他方案的对象,则必须为其授予对象的权限,为了简化权限的管理,可以使用角色
权限:
这里是执行特定的命令和访问对象的权利.包括系统和对象权限
是执行特定类型的sql命令.主要是对用户来说的.分类
对于普通用户:授予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中带有客户端替我们做了这些
工作。所以一些常用的命令我们还是亲自多多写写吧。刚开始熟悉环境还是很有用处的。
原文:http://blog.csdn.net/han_yankun2009/article/details/28851327