ORACLE数据库的用户权限和角色权限控制

这篇文章讲述的是ORACLE数据库的用户权限控制,如有错误或者不当之处还希望各位大神批评指正。

用户权限是什么?

在数据库中,用户可以对数据库进行的操作叫做用户的权限。

如何创建一个用户?

  • 创建一个名为‘cmc’的用户
create user cmc
identified by cmc ;

系统权限

  1. CREATE SESSION 创建会话
  2. CREATE SEQUENCE 创建序列
  3. CREATE SYNONYM 创建同名对象
  4. CREATE TABLE 在用户模式中创建表
  5. CREATE ANY TABLE 在任何模式中创建表
  6. DROP TABLE 在用户模式中删除表
  7. DROP ANY TABLE 在任何模式中删除表
  8. CREATE PROCEDURE 创建存储过程
  9. EXECUTE ANY PROCEDURE 执行任何模式的存储过程
  10. CREATE USER 创建用户
  11. DROP USER 删除用户
  12. CREATE VIEW 创建视图

对象的权限

  1. 修改(alter)
  2. 删除(delete)
  3. 执行(execute)
  4. 索引(index)
  5. 插入(insert)
  6. 关联(references)
  7. 选择(select)

两个系统常用的角色

  1. connect角色:仅具有创建session的权限
  2. resource角色:仅具有创建CLUSTER,INDEXTYPE,OPERATOR,PROCEDEURE,SEQUENCE,TABLE,TRIGGER,TYPE的权限

如何给用户赋予权限?

  • 给‘cmc’用户授与连接,创建表,创建视图,创建索引的权限
grant connect,create table,create view ,create any index to cmc ;
  • 给‘cmc’用户查询SCOTT用户中表t_student的权限,并且让cmc用户可以将权限赋予别人
grant select
on scott.t_student 
to cmc
with grant option

收回用户权限

  • 删除用户‘cmc’的创建视图的权力
revoke create view from cmc ;

删除用户

-删除‘cmc’用户

drop user username  cascade

用户角色是什么?

在数据库中,为便于对用户及权限进行管理,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)。

创建一个角色

  • 创建角色manager,赋予权限连接、新建用户、删除用户、修改用户。
create role manager ;
grant connect , create user , alter user ,drop user to manager ;

给一个用户赋予角色

  • 将manager用户赋予给用户cmc
grant manager to cmc ;

删除一个用户的角色

revoke role manager from cmc 

删除角色

drop role manager

如何查询用户和权限?

有一下几个重要的视图,方便查询用户及权限

  1. ROLE_SYS_PRIVS 角色拥有的系统权限
  2. ROLE_TAB_PRIVS 角色拥有的兑现权限
  3. USER_ROLE_PRIVS 用户拥有的角色
  4. USER_TAB_PRIVS_MADE 用户分配的关于表对象的权限
  5. USER_TAB_PRIVS_RECD 用户拥有的关于表对象的权限
  6. USER_COL_PRIVS_MADE 用户分配的关于列对象的权限
  7. USER_COL_PRIVS_RECD 用户拥有的关于列对象的权限
  8. USER_SYS_PRIVS 用户拥有的系统权限

    • 查询用户‘cmc’拥有的系统权限
--cmc用户登录下

select * from user_sys_privs
  • 查询‘cmc’表对象权限
select * from USER_TAB_PRIVS_RECD

猜你喜欢

转载自blog.csdn.net/u013634252/article/details/80727230