DBMS大都采用自主存取控制保证数据库数据的安全性。通过授权(authority)使不同的用户对不同的数据对象有不同的存取权限。SQL
Server中的权限分为语句权限和对象权限。 授予权限(GRANT)是指允许具有特定权限的用户有选择地、动态地把某些权限授予其他用户,必要时还可以收回这些权限。 授予用户权限的语句格式如下: GRANT 权限表 ON 操作对象 TO {用户1[,用户2]…..|PUBLIC} [ WITH GRANT OPTION ] 参数说明: ALL: 指定对象的所有权限授予用户。 PUBLIC: 将指定的权限授予所有用户。 WITH GRANT OPTION:它使得被授权的用户具有授权权限,即被授权的用户有权力将得到的指定权限再授予其他用户。 1. 语句权限 语句权限也称数据库级权限,主要是系统特权或DBA的权限。DBA或数据库的拥有者可以把某些SQL语句的执行命令授予其他用户,这种权限称为语句权限。语句权限包括: CREATE DATABASE、 CREATE DEFAULT、 CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW、BACKUP DATABASE、BACKUP LOG 授予语句权限的格式如下: GRANT { ALL | 语句权限1 [ ,...n ] } TO 用户1 [ ,...n ] ![]() GRANT CREATE DATABASE, CREATE TABLE TO Mary, John, [Corporate\BobJ] ![]() USE pubs GO GRANT CREATE VIEW , CREATE TABLE TO 张力 2. 对象权限 对象权限是指数据库对象创建以后,通常只有创建它的拥有者才可以访问该对象。拥有者可以把对象的访问权限授予其他的合法的数据库用户,其他用户才能访问该数据库对象,这种权限称为对象权限。 对象权限是指对表、视图、用户定义函数和存储过程等的操作权限。 当在表或视图上授予对象权限时,对象权限列表可以包括下列这些权限中的一个或多个操作:SELECT、INSERT、DELETE、 UPDATE 、REFENENCES 或 ALL。 在存储过程上授予的对象权限只可以包括执行存储过程权限 EXECUTE。 在标量值函数上授予的对象权限可以包括 EXECUTE 和 REFERENCES。 授予对象权限的语句格式如下: GRANT { ALL |对象权限1 [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO 用户1 [ ,...n ] [ WITH GRANT OPTION ] ![]() GRANT ALL ON student TO 张力; ![]() GRANT SELECT ON couse TO 王红 WITH GRANT OPTION ; ![]() GRANT SELECT ON couse TO 李立 ![]() USE pubs GO GRANT SELECT ON authors TO public GO GRANT INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom GO 在数据库内部,SQL Server提供了权限作为访问权设置的最后一道关卡。当数据库对象刚刚创建完成,只有拥有者可以访问该数据库对象。任何其他用户想访问该对象必须首先获得拥有者赋予他们的权限。拥有者可以授权给指定的数据库用户,这种权限被称为对象权限。 ![]() GRANT INSERT, UPDATE, DELETE ON dept TO 张力 权限只能授予本数据库的用户,或者获准访问本数据库的其他数据库的用户。如果将权限授予了public角色,则所有数据库里面的所有用户都将默认为获得了该项权限。如果将权限授予了guest用户,则所有可以连接上服务器的用户都默认获得了该项权限。 |