SQL中使用grant和revoke语句向用户授予或收回对数据的操作权限
grant...
on...
to...
[ with grant option ];
发出该grant语句的可以是数据库管理员,也可以是该数据库对象创建者,还可以是已经拥有该权限的用户。接收权限的用户可以是一个或多个用户,也可以是public,即全体用户。
如果指定了with grant option子句,则获得某种权限的用户还可以把这种权限再授予其他的用户,如果没有指定with grant option子句,则获得某种权限的用户只能使用该权限,不能传播该权限。
grant select,update(Sno)
on table student
to user1,user2
with grant option;
grant all privileges
on table student,course
to public;
授予用户的权限可以由数据库管理员或其他授权者用revoke语句收回,revoke语句的一般格式为:
revoke...
on...
from...
[ cascade | restrict ];
revoke update(Sno)
on table Student
from user2;
收回用户user2修改学生学好的权限。
注意:语句最后的可选参数,级联和限制,有的数据库管理系统默认级联,有的反之。如果一个用户授予了其它用户授予权限的权限,其它用户基于此又向其它的用户授予了权限,则cascade选项会收回这些所有用户的权限,反之restrict会拒绝执行操作。
#数据库管理员拥有对数据库所有对象的所有权限
#用户对自己建立的基本表和视图拥有全部的操作权限。
grant和revoke语句向用户授予或收回对数据的操作权限,对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。
create user
只有系统的超级用户才有权传建一个新的数据库用户
connect 是默认权限:只能登录数据库。
resource用户能创建基本表和视图并授予其存取权限给其他用户。
dba是超级用户。
#数据库角色是被命名的一组与数据可操作相关的群贤,角色是权限的集合。
(使用角色来管理数据库权限可以简化授权的过程)
create role <角色名>
create role r1;
创建角色
grant select,update,insert
on table student
to r1;
grant r1
to user1,user2,user3;
revoke r1
from user2;
grant delete
on table student
from r1;
使角色在原来的基础上增加了student表的delete权限
revoke select
on table student
from r1;
#还可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内。
#审计功能把用户对数据库的所有操作自动记录下来放入审计日志中,审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取的人,时间,内容等。
audit alter,update
on sc;
noaudit alter,update
on sc;
取消对sc表的审计