oracle-用户管理与权限分配

模式或方案s实际上是用户所拥有的数据库对象的集合

创建于管理用户

  身份验证

提供了3种身份验证方法

1.密码验证

由于用户信息和密码都存储在数据库内部,所以使用密码验证用户也称为数据库验证用户

2.外部验证

  外部验证是指当用户视图链接到数据库时,数据库会核实用户名是否为一个有效的数据库账号,并且确认该用户已经完成了操作系统级别的身份验证

外部验证用并不在数据库中存储一个验证密码                                                                                                                                     

3.全局验证

  全局验证是指用户不在数据库中存储验证码,而是通过一种高级安全选项所提供的身份验证服务来进行的

一般,比较常用的方式是密码验证方式

创建用户

--identified exeternally

  表示用户在操作系统下验证,在这种情况下,要求该用户必须与操作系统中所定义的用户名相同  

--identified globally as 'CN=user'

  表示用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名

--quota[integer k[M]][unlimited]] on tablespace_specify

  表示用户在制定表空间中允许占用的最大空间

--profiles profile_name

  资源文件的名字

--account lock or account unlock:用户是否被加锁,默认情况下不加锁

如:创建一个用户,mr,口令mrsoft,并设置默认的表空间为users,临时表空间为temp的用户

create user mr identified by mrsoft

dafault tablespace users

temporary tablespace temp;

如:创建一个用户east,口令mrsoft,默认表空间是users,临时表空间是temp的用户,并制定该用户在tbsp_1表空间上最多可使用的大小为10MB:

create user east identified by mrsoft
default tablespace users
temporary tablespace temp
quota 10m on tbsp_1
/

如果禁止用户使用某个表空间,则可以通过quota关键字设置该表空间的使用限额为0

如:创建用户df,口令mrsoft,临时表空间temp,默认表空间tbsp_1,并且该用户使用tbsp_1表空间不受限制

create user df identified by mrsoft
default tablespace tbsp_1
temporary tablespace temp
quota unlimited on tbsp_1
/

注意:

1.如果没有为用户不指定default tablespace子句,Oracle会将system表空间作为用户默认表空间

2.如果没有指定temporary tablespace ,Oracle会将数据库默认临时表空间作为用户的临时表空间

3.如果建立的用户没有为表空间指定quota子句,那么用户在特定表空间上的配额为0,用户将不能再相应的表空间上建立数据对象

修改用户:alter...

1.修改用户的磁盘配额

alter user east quota 20m on tbsp_1;

2修改用户的口令

alter user east identified by 123456;

3.解锁被锁住的用户

alter user SH account unlock;

删除用户

drop user df cascade

cascade:级联删除,如果用户包含数据库对象,则必须加cascade,此时连同该用户所拥有的对象一起删除

用户权限管理

  在创建了用户之后,只是在Oracle中进行了注册,这样的用户不能连接到数据库,必须让具有DBA角色的用户对该用户进行授权

权限分类:

  系统权限--系统级对数据库进行存取和使用的机制,SESSSION,DDL(CREATE,ALTER,DROP)...

  对象权限--某一用户对其他对象用户的表、视图、序列、存储过程、函数、包等的操作权限。不同类型的对象具有不同的对象权限,对于某些模式对象,比如簇、索引、触发器、数据库连接等没有相应的实体权限,这些权限由系统权限进行管理。

授权操作

  system_privilege_map数据目录视图

--with admin option

  表示被授权者可以再将权限授予另外的用户

如:为用户east 授予连接和开发系统权限,并尝试使用east连接数据库:

grant connect,resource to east;

如:在创建用户dongfang和xifang后,首相system将创建session和table的权限授给dongfang,然后dongfang再将这两个权限传递给xifang,最后通过xifang用户创建一个数据表

create user dongfang identified by mrsoft default tablespace users quota 10m on users;

create user xifang identified by mrsoft default tablespace users quota 10m on users;

grant create session,create table to dongfang with admin option;

connect dongfang/mrsoft

grant create session,create table to xifang

connect xifang/mrsoft

create table tb_xifang

(

id number,

name varchar2(20)

);

回收系统权限

使用revoke命令可以撤销用户不必要的系统权限

如:revoke resource from east

  如果DBA用grant命令给用户A授予系统权限带有with admin option,则该用户A有权将系统权限再次授予另外的用户B。在这种情况,如果DBA使用revoke命令撤销用户A的系统权限,则用户B的系统权限仍然有效

对象授权

如:给用户xifang授予select ,insert,delete 和update表soctt.emp的权限

grant select,insert,delete,update on scott.emp to xifang

回收对象权限

如:revoke delete,update on scott.emp from xifang;

  和授权系统权限不同,如果是wiht admin option授权的用户,会级联回收其他用户

查询用户与权限

数据字典名称 说明
dba_users 数据库用户基本信息表
dba_sys_privs 已授予用户或角色的系统权限
dba_tab_privs 数据库对象上的所有权限
user_sys_privs 登录用户可以查看自己的系统权限
role_sys_privs 登录用户查看自己的角色
all_tables 用户可以查看自己的角色
user_tab_privs 用户自己将哪些基表权限授予哪些用户
all_tab_privs 哪些用户给自己授权

角色管理

  角色是一个独立的数据库实体,它包括一组权限。也就是说,角色是包括一个或多个权限的集合,它并不被哪个用户所拥有。角色可以被授予任何用户,与可以从用户中将角色收回

预定义角色

  在数据库系统完成后,由系统自动创建的。

connect

resource

dba

exp_full_database--操作数据库的导出工具

imp_full_database--操作数据库的导入工具

一般数据库管理员分别授予connect,resource,dba

数据库开发人员:connect resource

创建角色与授权

--identified by exeternally:表示角色名在操作系统下验证

--identified by globally:表示用户是Oracle安全域中心服务器来验证,此角色由全局用户来使用

如:创建一个名为designer角色,该角色的口令为123456:

create role designer identified by 123456;

grant create view,create table to designer

把角色授给某个用户

grant designer to dongfang;

管理角色

1.查看角色所包含的权限

  role_sys_privs

如:select * from role_sys_privs where role='DESIGNER';

2.修改角色密码

--取消密码:alter role designer not identified;

--修改角色密码:alter role designer identified by mrsoft;

3.设置当前用户要生效的角色

如:set role  designer (identified by mrsoft)

4.删除角色

如:drop role queryer

角色与权限的查询

DD--dba_col_privs

  数据库列上的所有权限

DD--session_roles

  当前用户所有有效权限

                                                                

          

原文地址:https://www.cnblogs.com/xcnblog3035/p/5274961.html