ITPub博客

首页 > 数据库 > Oracle > oracle用户.权限.角色

oracle用户.权限.角色

原创 Oracle 作者:lllllcheng 时间:2015-12-19 20:17:42 0 删除 编辑
oralce权限设置
一.权限分类:
系统权限:系统规定用户使用数据库的权限。(系统权限是针对用户而言)。
对象权限:某种权限用户对其它用户的表或视图的存储权限。(是针对表或视图而言)。

二.系统权限管理:
1.系统权限分类:
DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有resource权限的用户只可以创建实体,不可以创建数据库结构。
connect:拥有connect权限的用户只可以登陆oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect权限。
对于DBA管理用户,授予connect,resource,dba权限。

2.系统权限授权命令
系统权限只能由DBA用户授出:sys,system(最开始只能是这两个用户)
命令SQL> grant connect,resource,dba to 用户1,用户2....
普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,systen用户的权限也可以被回收。

查看用户的权限和角色
SQL> select * from dba_sys_privs;查看用户有哪些系统权限
SQL> select * from dba_tab_privs;查看用户有哪些对象权限
SQL> select * from role_sys_privs;查看用户拥有的角色的权限;
SQL> select * from role_role_privs;查看用户的角色包含了哪些角色;
SQL> select * from dba_role_privs查看用户拥有的角色。

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


系统权限传递;

增加with admin  option选项,则得到的系统权限可以传递;
1如果使用with admin option为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。
2系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

对象权限传递:
对象权限分类:select,updata,insert,alter,index,delete,all  //all包括所有权限
增加with  grant option权限,并可以传递。
!!:如果取消某个用户的对象权限,那么对于这个用户使用with grant option授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权时级联的。

角色。角色是一组权限的集合,将角色付给一个用户,这个用户就拥有了这个角色中的所有权限。
说明:
无法使用with  grant option  为角色授予系统权限;
可以使用with admin option为角色授予对象权限,

下面通过具体的实验加深理解
创建用户chengzhuo,kong;默认表空间,默认临时表空间;

SQL> create user chengzhuo identified by oracle;

User created.

SQL> create user kong identified by oracle;

User created.

创建角色ccc;

授予角色create session系统权限,select on scott.emp角色权限。

SQL> create role ccc;


Role created.

SQL> grant create session to ccc;


Grant succeeded.

SQL> grant select on scott.emp to ccc;

Grant succeeded.

赋予用户chengzhuo角色ccc并级联。

SQL> grant ccc to chengzhuo with admin option;


Grant succeeded.

连接chengzhuo赋予用户kong角色ccc;


SQL> conn chengzhuo/oracle

Connected.

SQL> grant ccc to kong;

Grant succeeded.

SQL> conn kong/oracle

Connected.

连接sys用户,收回用户chengzhuo的角色;尝试登陆
SQL> revoke ccc from chengzhuo;

Revoke succeeded.

SQL> conn chengzhuo/oracle
ERROR:
ORA-01045: user CHENGZHUO lacks CREATE SESSION privilege; logon denied

Warning: You are no longer connected to ORACLE.

登陆用户kong,权限不受影响

SQL> conn kong/oracle


Connected.


SQL> select count(*) from scott.emp;



  COUNT(*)
----------
        14
收回ccc角色的create session权限;

SQL> conn / as sysdba


Connected.


SQL> revoke create session from ccc;


Revoke succeeded.

SQL> conn kong/oracle
ERROR:
ORA-01045: user KONG lacks CREATE SESSION privilege; logon denied

Warning: You are no longer connected to ORACLE.

收回ccc角色的create  on scott.emp权限

SQL> conn / as sysdba        


Connected.


SQL> grant create session to kong;


Grant succeeded.

SQL> revoke select on scott.emp from ccc;

Revoke succeeded.

SQL> conn kong/oracle
Connected.

SQL> select * from scott.emp;

select * from scott.emp
                    *
ERROR at line 1:
ORA-00942: table or view does not exist
!!级联授予系统权限时,收回A用户,B用户的权限不受影响;但收回角色的权限时,则授予所有用户的相同权限都会取消;







来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30606744/viewspace-1875179/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 数据泵expdp/impdp
请登录后发表评论 登录
全部评论

注册时间:2015-12-02

  • 博文量
    41
  • 访问量
    133252