一、概述
select * from system_privilege_map;--查看Oracle所有系统权限
select * from role_sys_privs; --查看角色所拥有的系统权限(包括自定义的角色)
select * from dba_role_privs; --查看用户拥有的角色(包括自定义的角色)
select * from dba_sys_privs; --查看用户拥有的系统权限(不包括角色里的)
select * from session_privs; --查看当前用户拥有的全部系统权限(user_role_privs+user_sys_privs)
select * from user_tab_privs; --查看用户拥有的对象权限
权限分为系统权限和对象权限。
二、系统权限
1、系统权限的查看:
select * from system_privilege_map;--查看Oracle所有的系统权限
select * from role_sys_privs; --查看Oracle所有角色所拥有的系统权限
select * from user_sys_privs; --查看用户拥有的系统权限(不包括角色里的)
select * from session_privs; --查看当前用户拥有的全部系统权限(user_role_privs+user_sys_privs)
例如:
CREATE SESSION 连接到数据库
CREATE [ANY] TABLE 建表
CREATE CLUSTER 建立簇
CREATE TYPE 建立对象类型
CREATE PUBLIC SYNONYM 建立同义词
CREATE DATABASE LINK 建立数据库链
create user 创建用户
drop user删除用户
--如果加上any ,例如 CREATE ANY TABLE 即为可以创建修改其他所有用户的表。
2、系统权限的授予与传递
GRANT create session,CREATE table TO liut_data; --授予用户liut_data登录和创建表格的系统权限。
GRANT CREATE SESSION,CREATE TABLE TO liut_data WITH ADMIN OPTION;
--WITH ADMIN OPTION的作用使授予给liut_data的这些权限可以授予其他角色或用户
说明:
(1)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。
(2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。
3、系统权限的回收
说明:系统权限只能由DBA用户回收,且系统权限收回的时候是不会级联收回
Revoke create table from jie1;
三、对象权限
1、对象权限的查看
select * from user_tab_privs; --查看用户拥有的对象权限
常见的对象权限
对象 | 权限 ALTER DELETE EXECUTE INDEX INSERT READ REFERENCE SELECT UPDATE
Directory no no no no no yes no no no
function no no yes no no no no no no
procedure no no yes no no no no no no
package no no yes no no no no no no
DB Object no no yes no no no no no no
Libary no no yes no no no no no no
Operation no no yes no no no no no no
Sequence yes no no no no no no no no
Table yes yes no yes yes no yes yes yes
Type no no yes no no no no no no
View no yes no no yes no no yes yes
(上表中,第一行横向的是对象权限所包含的权限,第一列竖向的是对象权限所能赋予的对象)
2、对象权限的授予与传递(假设以 liu 的用户登录,授予 liut_data 权限)
GRANT UPDATE ON liu.emp TO liut_data; --授予用户liut_data可以更新用户liu下emp表的权限;
grant all on liu.emp to liut_data;--将表相关的所有对象权限授予liut_data;
Grant update(ename) on emp to liut_data; 可以控制到某列(还有insert)
GRANT SELECT ON liu.emp TO liut_data WITH GRANT OPTION;
--WITH GRANT OPTION的作用使授予给liut的这些权限可以授予其他用户,但当liut_data的SELECT ON liu.emp权限被回收时,liut_data所授予其他用户的SELECT ON liu.emp权限也会被回收。
3、对象权限的回收
REVOKE 权限 ON schema.table FROM 用户
|- REVOKE select ON scott.emp FROM liut_data ;
对象权限可以传递赋予,但是回收的时候是级联回收的
4、WITH ADMIN OPTION 和 WITH GRANT OPTION 的区别
WITH ADMIN OPTION 只能用于系统权限授予,授予范围为角色和用户,且不会被波及。
WITH GRANT OPTION 只能用于对象权限授予,授予范围只为用户,且会被波及,权限一并回收。
关于权限的传递,如果权限sys->test->test1 ,这时断掉test的权限, test1还会有权限吗?在oracle9i是,答案是还会有。
四、角色
角色是权限的集合,多个权限的打包。
1、角色的查看
select * from role_sys_privs; --查看Oracle所有角色所拥有的系统权限
select * from user_role_privs; --查看用户拥有的角色
常用的角色有 CONNECT,RESOURCE,DBA (均是建立数据库时,Oracle执行脚本SQL.BSQ自动建立的预定义角色)
DBA 角色具有所有系统权限和WITH ADMIN OPTION选项。
其他角色如DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE 这些角色主要用于访问数据字典视图和包。
EXP_FULL_DATABASE, IMP_FULL_DATABASE 这两个角色用于数据导入导出工具的使用。
注意:赋予一个新用户CONNECT,RESOURCE后,该用户有了创建表的权限了,但还无法创建表,因为该用户没有对表空间操作的权限。
GRANT UNLIMITED TABLESPACE TO youruser(11g不用)
2、自定义角色
CREATE ROLE myrole; --创建角色
--CREATE ROLE ceo IDENTIFIED BY boss;
GRANT CREATE SESSION,CREATE TABLE TO myrole; --给角色授权
DROP ROLE myrole; --删除角色
五、Oracle 用户
创建用户只能在DBA角色下完成,例如
超级管理员:sys
普通管理员:system
1、创建用户
CREATE USER liut IDENTIFIED BY "liut" --用户名liut密码liut,密码最好用""括起来
DEFAULT TABLESPACE mytablespace --指定用户表空间
TEMPORARY TABLESPACE mytemporary --指定临时表空间
PROFILE DEFAULT --指定概要文件
ACCOUNT UNLOCK --不锁定
QUOTA UNLIMITED ON mytablespace --无限制使用表空间
;
2、授予权限/角色
一般在数据库中,一个用户的连接称为建立一个session,如果一个新的用户想访问数据库,则必须授予创建session 的权限
GRANT CREATE SESSION,CREATE TABLE TO liut_data WITH ADMIN OPTION;--授予系统权限
GRANT CONNECT,RESOURCE,DATAPUMP_IMP_FULL_DATABASE,DATAPUMP_EXP_FULL_DATABASE,IMP_FULL_DATABASE,EXP_FULL_DATABASE TO liut;
GRANT CONNECT,RESOURCE,DBA TO liut;--授予角色
GRANT SYSDBA,SYSOPER to liut;
3、删除用户
drop user liut cascade; --加上cascade级联删除liut所创建的所有对象,包括回收站
4、权限回收
revoke connect,resource from liut;
5、锁定解锁用户
ALTER USER 用户名 ACCOUNT LOCK|UNLOCK
|- ALTER USER test ACCOUNT LOCK ; --锁定
|- ALTER USER test ACCOUNT UNLOCK ; --解锁
6、修改密码
alter user drm_mdm identified by "drm_mdm_liut";
7、修改用户默认表空间
alter user a1 default tablespace users;
select DEFAULT_TABLESPACE from dba_users where username='SCOTT';
参考文献:
http://blog.sina.com.cn/s/blog_a5a24bcb01010lz9.html
Oracle 用户、角色与权限管理
最新推荐文章于 2021-04-02 23:34:26 发布