数据库的安全性与完整性-权限与收回权限

SQL语言用 grant 语句向用户授予操作权限。一般形式为:

grant <权限1>,<权限n>

on <对象类型><对象名>

to <用户1>,<用户n>

with grant option

语义为:将对指定操作对象的指定操作权限授予指定用户

<权限>可以是:select,insert,update,delete,alter,index,all

例如:

--1.把查询表SC修改其学号的权限授给用户U2和U4

grant select,update(sno)

on table SC

to U2,U4;

--2.把对表SC的insert权限授给用户U5,并允许将此权限再授予其它用户

grant insert

on table SC

to U5

with grant option;

U5还可以将次权限授予U6:

grant insert

on table SC

to U6;  //U6不能再传播次权限

--3.DBA把在数据库Stud建立表的权限授予用户U8

grant createtab

on database Stud

to U8;

注意:授予关于datebase(数据库)的权限必须与授予关于table(表)的权限分开,因为对象类型不同

授予的权限可以由DBA或其它授权者用revoke语句收回,其格式一般为:

revoke <权限>

on <对象类型><对象名>

from <用户1>,<用户n>

[cascade|restrict];

cascade指联级表,收回时用户转授予给别的用户的权限也会被收回。

restrict:限定只当依赖表中外码没有与目标表中要删除或修改的候选码对应时,系统才能对目标表中的候选码进行删除或修改,否则系统拒绝此操作

--1.收回所有用户对表SC的查询操作

revoke select

on table SC

from public

--2.把用户U5对SC表的insert权限收回

revoke insert

on table SC

from U5;

--3.取消Ling的存取Student表的特权

revoke all

on student

from Ling cascade   //此时,被Ling转授的权限也被收回

视图机制

--1.仅允许用户U1拥有学生表student中所有男学生记录的查询和插入权限,允许用户U3拥有对该表中所有男学生记录的全部操作权限

解:先建立student中所有男学生记录的视图,再将该视图的select,insert权限授予U1

create view student_male

as select * from student

where sex='男';

grant select,insert

on  student_male

to U1;

grant all privileges

on student_male

to U3;

--2.允许所有用户查询每个学生的平均成绩(不允许了解具体的各课程成绩)

crreate view grade_avg(sno,grade)

as select sno,avg(grade) from SC

group by sno;

grant select

on grade_avg

to public;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值