模式或方案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
当前用户所有有效权限