这篇文章讲述的是ORACLE数据库的用户权限控制,如有错误或者不当之处还希望各位大神批评指正。
用户权限是什么?
在数据库中,用户可以对数据库进行的操作叫做用户的权限。
如何创建一个用户?
- 创建一个名为‘cmc’的用户
create user cmc
identified by cmc ;
系统权限
- CREATE SESSION 创建会话
- CREATE SEQUENCE 创建序列
- CREATE SYNONYM 创建同名对象
- CREATE TABLE 在用户模式中创建表
- CREATE ANY TABLE 在任何模式中创建表
- DROP TABLE 在用户模式中删除表
- DROP ANY TABLE 在任何模式中删除表
- CREATE PROCEDURE 创建存储过程
- EXECUTE ANY PROCEDURE 执行任何模式的存储过程
- CREATE USER 创建用户
- DROP USER 删除用户
- CREATE VIEW 创建视图
对象的权限
- 修改(alter)
- 删除(delete)
- 执行(execute)
- 索引(index)
- 插入(insert)
- 关联(references)
- 选择(select)
两个系统常用的角色
- connect角色:仅具有创建session的权限
- 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
如何查询用户和权限?
有一下几个重要的视图,方便查询用户及权限
- ROLE_SYS_PRIVS 角色拥有的系统权限
- ROLE_TAB_PRIVS 角色拥有的兑现权限
- USER_ROLE_PRIVS 用户拥有的角色
- USER_TAB_PRIVS_MADE 用户分配的关于表对象的权限
- USER_TAB_PRIVS_RECD 用户拥有的关于表对象的权限
- USER_COL_PRIVS_MADE 用户分配的关于列对象的权限
- USER_COL_PRIVS_RECD 用户拥有的关于列对象的权限
USER_SYS_PRIVS 用户拥有的系统权限
- 查询用户‘cmc’拥有的系统权限
--cmc用户登录下
select * from user_sys_privs
- 查询‘cmc’表对象权限
select * from USER_TAB_PRIVS_RECD