当前位置: > 数据库 > Oracle >

Oracle的用户、角色和权限

时间:2015-07-11 21:50来源:linux.it.net.cn 作者:IT
一、用户

创建用户的语句
create user  用户名
identified by  密码(不要加引号)
default tablespace 默认表空间名 quota 5M on 默认表空间名
[temporary tablespace 临时表空间名]
[profile 配置文件名]                                          //配置文件
[default role 角色名]                                        //默认角色
[password expire]                                             //密码失效
[account lock]                                                   //账号锁定
修改用户
alter user 用户名 identified by 密码 quota 10M on 表空间名
alter user 用户名 account lock/unlock
删除用户
drop user 用户名 [cascade].如果要删除的用户中有模式对象,必须使用cascade.
二、概要文件

资源限制参数:对CPU时间,逻辑读,用户并发会话数,空闲时间,连接时间等数据库和系统资源进行限制。资源参数的值可以是整数,也可以是default或者unlimited。会话级限制是对用户在一个会话过程中所能使用的资源进行限制,调用级限制是对一条SQL语句在执行过程中所能使用的资源进行限制。

资源限制参数有以下几个:sessions_per_user,cpu_per_session/call, lagical_reads_per_session/call, connect_time, idle_time(会话的空闲时间), composite_limit,private_sga。

口令管理策略参数包括:failed_Login_attempts,password_lock_time, password_life_time, password_grace_time,password_reuse_time, password_reuse_max,password_verify_function.

在数据库启动之前,可以通过设置resource limit来决定资源限制的状态。默认是false,不启用。在数据库启动后,可以使用alter system来改变资源限制的状态。alter system set resource limit = true/false.

创建概要文件,可以使用create profile profilename limit [parameters]的语句。
修改概要文件,可以使用alter profile profilename limit [parameters]
删除概要文件,drop profile profilename [cascade 如果已经分配给某个用户]

下面的视图是数据库用户和配置文件信息:
DBA_USERS     所有用户,
all_users     当前用户能看到的所有用户,
user_users     描述当前用户,
dba_ts_quotas    描述用户的表空间限额,
user_ts_quotas    描述具体用户的表空间限额,
user_password_limits 当前用户的口令概要文件参数,
user_resource_limits 当前用户的资源限制,
DBA_profiles    所有的概要文件及其限制,
resource_cost    每个资源的开销,
V_$session     每个当前会话的会话信息,
v_$sesstat     用户会话的统计数据,
v_$_statname, proxy_users可以呈现其他身份的用户.

三、权限

      系统权限是执行一种特殊动作或在对象类型上执行一种特殊动作的权利。这些权限可以授权给用户或者角色,不过一般只授予管理人员和应用开发人员,终端用户不需要这些相关功能。获得授权的用户可以将该权限授予其他用户或者角色,也可以从被授权的用户或者角色收回系统权限(不管是不是自己授权的,都可以收回)。
      对象权限是指在指定的表、视图、序列、过程、函数或者包上执行特殊动作的权力。对于不同类型的对象,有不同的对象权限。像聚集,索引,触发器,数据库链等没有相关的对象权限,它们由系统权限控制。模式的所有者对模式中的对象具有全部对象权限。这些对象的所有者可将这些对象上的任何对象权限授予其他用户。被授权的那些用户可以将获得的权限继续授权给其他人。

四、角色

角色是相关权限的命名组,可以授权给用户或者角色,但不能出现循环授权
任何角色都可授权给任何数据库用户
一个角色可以被授予系统权限,或者对象权限
角色不包含在任何模式中,所以建立角色的用户被删除后,角色不会受到影响
创建角色的语句是    create role 角色名
grant {select on tablename} to rolename为该角色授予一些对象权限和系统权限。角色也需要认证,不过创建角色时默认是不认证的。可以用identified by子句来加上认证
oracle事先定义了五个角色。conncet具有创建表、视图、序列等权限。resource具有创建过程,触发器,表,序列等权限,dba具有全部系统权限,exp_full_database和mp_full_database具有卸出与装入数据库的权限。可以查询sys_dbs,sys_privs可以了解各种角色拥有的权限。
下面是数据库中有关权限和角色的视图:
dba col privs                   描述db中所有列对象的授权,就是具体到某个字段的那些授权   
all col privs                      描述当前用户或者具有public权限用户的所有列对象授权    
user col privs                   描述列对象权限,这些权限的授予者或者被授予者,是当前用户。
all col privs made           描述列对象权限,这些权限的所有者或者授予者是当前用户
user col privs made        描述列对象权限,这些权限的授予者是当前用户,
all col privs recd             描述列对象权限,这些权限的被授予者是当前用户或者public
user col privs recd          描述列对象权限,这些权限的被授予者是当前用户
dba tab privs                   数据库中所有表的授权
all tab privs                     描述表权限,这些权限的授予者是当前用户或者public
user tab privs                  列出当前用户是其被授予者所有对象的授权
all tab privs made           描述当前用户所做的,或者在当前用户所拥有的对象上的对象授权
user tab privs made        列出在当前用户所拥有的所有对象上的授权
all tab privs recd             描述对象授权,这些授权的被授予者是当前用户或者public
user tab privs recd          描述对象授权,这些授权的被授予者是当前用户
dba roles                       数据库中存在的所有角色             //没有找到这个视图
dba role/sys privs              授予给用户或角色的角色/系统权限
user role/sys privs             授予给当前用户的角色/系统权限
role role privs                 授予给其他角色的角色,只是该用户可以访问的角色信息
role sys privs                  授予给角色的系统权限的信息,提供的只是该用户可以访问的信息
role tab privs                  授予给角色的对象权限的信息,提供的只是该用户可以访问的信息
session privs/roles             用户当前激活的权限和角色

五、角色和权限的操作

授予权限或者角色

grant 系统权限 to 用户名 [with admin option].带上with子句,可以让该用户有权限把系统权限授予其他用户
grant 对象权限/all to 用户名[with grant option].带上with子句,可以让该用户有权限把对象权限授予其他用户
有三类对象权限可以授予表或者视图的字段,分别是insert,update,references。比如grant select, insert(字段名),update(字段名) on 表名 to 用户名 with grant option.  
grant 角色名 to 用户名 [with admin/grant option]. 可以把角色授予用户。如果使用了with admin option 子句,该用户可以从任何具有该角色的用户那里收回角色,也可以删除或者修改这个角色。
在同一条grant语句中,可以同时为一个用户授予系统权限和角色,但是不能同时授予对象权限和角色。
收回权限

revoke select, update on 表名 from 用户名
也可以用all 或者all privileges将某个对象所有的对象权限都收回。
激活与禁用角色
        当用户连接到数据库时,只有他的默认角色是激活的,可以用  alter user 用户名 default role  角色名  改变默认角色。还可以用set role 激活或禁用自己拥有的角色。


(责任编辑:IT)
------分隔线----------------------------