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;

权限分配之后,一定要重新登录用户;
那么如何查看这个角色内有多少系统/对象权限呢?
这就需要通过查看数据字典来查看:

--该角色的系统权限
select* from dba_sys_privs where grantee = 'dba'
--该角色的对象权限
select * from dba_tab_privs where grantee = 'dba'
--查询某个用户具有多少角色
select* from dba_role_privs where grantee = '用户名';

一旦有的用户,我们可能就会遇到忘记密码这种尴尬问题,下面用管理员修改密码等一系列操作;
修改用户密码:

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

假如,用户A创建视图a需要访问用户B的数据b,这个时候,就需要把B的查看b表权限赋给A,但是,如果用户C想要查看用户A的视图a,就需要把A的查看视图a的权限赋给C,但是这个时候,会提示ora-01720 授权选项对于‘b’不存在,这是因为,视图a中的数据中有用户B中b表的数据,而C是没有权限查看的,这个时候,需要在把B的查看b表的权限语句后面加上 with grant option,这样,就可以把A的查看视图a的权限赋给C了。

grant select on a to C with grant option;

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值