`

【转】Oracle中的权限管理

 
阅读更多
Oracle中的权限管理

说明:Oracle中权限分为系统权限和对象权限

1.Oracle中有3个默认的用户
	1.sys用户 change_on_install DBA用户 (登录是必须加 as sysdba)
	2.system用户 manager 管理员用户
	3.scott用户 tiger 普通用户
	4.创建新的用户
		create user myUser identified by myPwd;
		
2.Oracle中3个重要的系统权限
	1.Oracle连接数据库权限
		新创建的用户(myUser)是不能连接数据库的,需要管理员给他赋予连接数据库的权限
		grant create session to myUser;
		授权成功以后就可以连接数据库了。
		
	2.Oracle中对表的权限
		grant create table to myUser;(只能给自己创建表,当给自己创建表以后,就相当于对自己的表拥有修改和删除的权限)
		grant create any table to myUser;(可以给任何人创建表)
		grant alter any table to myUser;
		grant drop any table to myUser;
		没有alter table 和 drop table 权限。
		授权成功以后就可以创建表。
		此时,当前用户就可以拥有自己的表,然后他可以对自己的表拥有增删改查权限,不用再授权。
		
	3.Oracle中不受上限的表空间使用权限
		grant unlimited tablespace;
		
	4.撤销各种权限
		revoke create session from myUser;
		revoke create table from myUser;
		revoke create any table from myUser;
		revoke alter any table from myUser;
		revoke drop any table from myUser;
		revoke unlimited tablespace from myUser;
		
	5.将系统权限授予所有人
		grant create session to public;
		grant create table to public;
		grant create any table to public;
		grant drop any table to public;
		grant alter any table to public;
		grant unlimited tablespace to public;
	
	6.查看当前用户拥有哪些系统权限
		select * from user_sys_privs;
		从视图中查看用户的系统权限。
		
			
3.Oracle中对象权限
	1.授予对象权限
		grant select on myTable to otherUser;
		grant select any table to otherUser;
		grant update on myTable to otherUser;
		grant update any table to otherUser;
		grant insert on myTable to otherUser;
		grant insert any table to otherUser;
		grant delete on myTable to otherUser;
		grant delete any table to otherUser;
		grant all on myTable to otherUser;
		grant all on myTable to public;
		
	2.撤销对象权限
		revoke select on myTable from otherUser;
		revoke select any table from otherUser;
		revoke update on myTable form otherUser;
		revoke update any table from otherUser;
		revoke insert on myTable form otherUser;
		revoke insert any table from otherUser;
		revoke delete on myTable fomr otherUser;
		revoke delete any table from otherUser;
		revoke all on myTable from otherUser;
		revoke all on myTable from public;
			
	3.对象权限可以控制到列(除了查询和删除)
		grant update(colName) on myTable to otherUser;
		grant insert(colName) on myTable to otherUser;
		当然也可以收回列的控制权限。
				
	4.查看当前用户拥有哪些对象权限
		select * from user_tab_privs;
		从视图中查看用户的对象权限
		select * from user_col_privs;
		从视图中查看用户对列的控制权限
		
4.ddl\dml\dcl介绍
	1.ddl.数据定义语言
		例如:创建表(create),修改表(alter),删除表等语句(drop)。
		
	2.dml.数据操作语言
		例如:插入数据(insert),删除数据(delete,truncate),更新数据(update),查询数据语句(select)。
	
	3.dcl.数据控制语言
		例如:授权(grant)和撤销权限(revoke)等语句。
	
	注意:只有dml需要commit,当然查询语句不需要commit。
	
5.Oracle中权限的传递
	1.对于系统权限
		不允许权限传递
			grant create session to myUser;
		允许权限传递
			grant create session to myUser with admin option;
		
	2.对于对象权限
		不允许权限传递
			grant select on myTable to otherUser;
		允许权限传递
			grant select on myTable to otherUser with grant option;
			
6.Oracle中的角色管理
	1.创建角色
		create role myRole;
	2.给角色授权
		grant create session to myRole;
		grant create table to myRole;
	3.给用户指定角色
		grant myRole to myUser;
	4.删除角色
		drop role myRole;
	5.有些权限很高,不能通过角色分配给用户,只能直接分配给用户
		比如:unlimited tablespace 
		grant unlimited tablespace to myUser;

7.Oracle中的3中验证机制
	1.操作系统验证
		SYSDBA,SYSOPER两个角色的用户(比如sys用户)都是用操作系统和密码文件验证
		用操作系统验证时,可以不需要用户名和密码
	2.密码文件验证
		当操作系统用户不存在时,就会进行密码文件验证,就需要正确的用户名密码。
	3.数据库验证
		一般数据库用户都是数据库验证,因为是在数据库启动以后才能普通用户登录	
	4.数据库的启动顺序
		1.启动监听
			lsnrctl start;
		2.进行sys用户登录
			sqlplus sys/password as sysdba;
			conn sys/password as sysdba;
			当监听器监听到是as sysdba 时候,就进行操作系统和密码文件验证。
		3.启动数据库(启动实例)
			startup;
		4.普通用户登录
			conn scott/tiger;
			当数据库启动以后,用户登录的时候就可以使用数据库验证。
转自: http://dyygusi.iteye.com/blog/1979662
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics