oracle --DCL语言

DCL数据库的控制语言
主要实现用户权限的控制
要实现用户的管理操作,必须要提供管理员权限(既用sys/system来操作)
1、首先用管理员创建一个用户dog/wangwang

create user dog identified by wangwang;

然后创建完成的时候,用户还不能登录,因为创建缺少session 的权限
2、为用户授予创建session 的权限

grant create session to dog;

3、如果我们要创建表,还 需要创建表的权限

grant create table to dog;

但是我们在创建用户的时候,一个一个的分配权限太麻烦了,在我们oracle中,提供了两个角色(connect,resource),这两个角色就相当于一个权限包,里面包含了我们所需要的一些权限,我们只要将这个角色给用户,用户就有了角色里面相应的权限

给用户分配角色:

grant connect,resource to dog;

权限分配之后,一定要重新登录用户;
一旦有的用户,我们可能就会遇到忘记密码这种尴尬问题,下面用管理员修改密码等一系列操作;
修改用户密码:

alter user dog identified by miaomiao;

让密码失效:登录之后需要立即修改密码:

alter user dog password expire;

锁定用户:

alter user dog account lock;

解锁用户:

alter user dog account unlock;

指定用户输入密码错误的次数,并指定超过次数之后的锁定时间:

--创建profile 文件
create profile lock_account limit failed_login_attempts 3 password_lock_time 2
--最多可以输入3次,超过后用户将被锁定2天
-- lock_account: profile文件名 
alter user scott profile lock_account

让用户定期修改密码,若到期后不修改,则在宽限期后锁定用户:

--创建profile文件
create profile  myprofile limit password_life_time 10 password_grace_time 2;
--10天后修改密码,宽限期为2天
alter user scott profile myfrofile;

删除profile文件:

drop profile myprofile 	[cascade]

对象权限:
两个普通用户之间不能互相访问资源,但是管理员可以访问;但是我们如果想让一个用户访问到另一个用户的资源该怎么办?
这就要在管理员界面将访问另一个用户的权限赋予给他:
实际上访问一个用户,用到的一共就四个权限:insert update select delete
我们一般只给一个用户查看(select) 的权限:

grant select on scott.emp to tog;(将scott的emp表的查看权限赋予给dog)

回收权限:

revoke connect,resource from dog;
revoke create session,create table from dog;

删除用户;

drop user 用户 cascade

权限分为系统权限和对象权限两种:
系统权限:create table ,create session…
对象权限:insert ,select,update,delete
而因为我们在使用过程中一个个的分配权限太麻烦,又定义了一个角色权限:他属于一个权限包,里面有一揽子系统或者对象权限;

猜你喜欢

转载自blog.csdn.net/enbaoIT/article/details/88530358
DCL