不管是什么类型的数据库,对数据库的管理,数据库的用户,角色和权限分配是最重要的几个概念:
1,oracle中的用户:
数据库可以有很多人使用,也就意味着有很多用户,sysdba和system是管理员,但同时他们也是用户,他们不仅可以处理数据库的数据,还可以管理其他用户,创建用户,删除用户等等。scott是个普通用户,他只能处理他权限范围内的数据。
创建用户:create user 用户名 indetified by 密码; //只能用system或者sys账户创建用户
删除用户: drop user 用户名;
修改用户密码: password 用户名 密码;//修改当前用户,不需加用户名;
需要注意的是,新创建的用户,连登入数据库的权利都没有,需要dba赋予此用户权限;这就引出了权限这个概念。
2,权限
权限是指用户对数据库控制的能力。
权限分为系统权限(用户对数据库访问的相关权限,建库,表,修改密码,create session权限等等)和
对象权限(用户对其他用户的数据对象操作的权限);
sysdba和system可以授予其他用户系统权限,普通用户可以授予其他用户对象权限;
命令:
授予系统权限: grant 权限名/角色名 to 用户名 with admin option;-- with admin option表示被授予权限的用户以后可以授此权限给其他用户;
授予对象权限: grant 权限名/角色名 dml语句 on 表/列 to 用户名 with grant option;-- with grant option表示被授予权限的用户以后可以授此权限给其他用户;
收回权限: revoke 权限名/角色名 from 用户名;//需要注意oracle中是采用级联收回权限的。
系统权限回收与对象权限回收的不同是对象权限时级联回收,而系统权限不会级联回收。
3,角色:具有一系列权限的组合。
为了简化授权过程,可以预定义或者自定义角色,使得角色具有一些权限的组合,然后把这个角色授予用户。
oracle中的角色有 connect dba,create session ,resource (此角色可以操作表)等;
角色分为预定义和自定义两种:
预定义角色:
1, connect角色:一般具有开发人员所需要的大部分权限,当建立一个用户后,多数情况下,只要给用户授予connect和resource角色就够了;
connect角色具有的系统权限:alter session , createcluster,create database link, create session, create table, create view, createsequence
2,resource角色:权限包括建立存储过程,触发器等。Unlimited tablespace,create cluster,create indextype, create sequence,createtype, create procedure, create trigger
3,dba角色: 具有所有的系统权限,但是不具备sysdba和sysoper的特权(启动和关闭数据库)权限;
自定义角色:
可以根据需要自己创建角色,create role 角色名字 not identified; notidentified表示采用不验证的方式建立角色;公用角色;
Create role 角色名字 identified by 用户名; 当激活这样创建的角色时,需提供口令;
删除角色:
drop role :有dba执行;
如果角色被删除了,那被赋予这个角色的用户就没有这个角色的权限了。
显示角色信息:动态性能视图的dba_roles里存放了数据库所有角色信息,
Select * fromdba_roles;
Selectprivilege,admin_option from role_sys_privs where role=’角色名’;//显示角色具有的系统权限;
Dba_tab_privs: 存放角色所有的对象权限和列的权限;
Dba_role_privs: 显示某个用户所有的角色级当前角色;select grant_role,default_role from dba_role_privs where grantee=’角色’;
精细访问控制:通过定义一个策略如emp_acess,类似于profile规格文件,可以使得不同用户在执行相同语句时得到不同的查询结果。
4,用户管理:
超级用户sys和系统用户system除了可以创建,删除用户,管理表外,还会对用户进行日常管理:
比如说给用户制造规则等,用户必须遵守,否则会有措施。
日常管理规则主要是通过使用profile来实现的。创建profile文件来存放规则,然后把这个规则施加于用户。
举例说明:
a: 规定用户xm 只能尝试3次登入数据库,如密码3此错误,锁定数据库2天;
首先创建规则:create profile lock_account limit failed_login_attempts 3 password_lock_time ;
把规则施加给xm: alter user xm profile lock_account;
b: dba要求xm 10天修改密码一次,宽限期为2天,重读的密码10天后可用:
create profile myfile limit password_life_time 10 password_grace_time 2 password_reuse_time 10;
alter user xm profile myfile;
c:解锁
alter user xm account unlock;
d,删除规则
drop profile myfile cascade : cascade为删除相关的一切