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/
,如需转载,请注明出处,否则将追究法律责任。