第三节 用SQL授予或撤销组或用户的权限
在程序开发中,如果我们想让某一数据库用户查看或更改数据库中任何数据的内容,那么我们就必须授予他们执行相应操作的权限。可以使用SQL的GRANT语句来授予用户特定的权限,用REVOKE语句来收回已授予给用户与组的权限。
一、授予组或用户权限的GRANT语句
GRANT语句的基本功能就是为现有用户或组授予指定的特权。其语法为:
GRANT {privilege[, privilege,...]}ON{TABLE table|OBJECT object|
CONTAINER container} TO {authorizationname[, authorizationname,
...]}
GRANT语句包含以下部分:
部分
|
说明
|
privilege
|
要授予的权限。使用以下关键字指定权限:Select、Delete、Insert、Update、 Drop、SelectSECURITY、UpdateSECURITY、DBPASSWORD、UpdateIDENTITY、Create、SelectSCHEMA、SCHEMA和UpdateOWNER。
|
tablename
|
任何有效的表名。
|
object
|
可以包含任何非表对象。存储查询(视图或过程)就是一个示例。
|
container
|
有效容器的名称。
|
authorizationname
|
用户名或组名。
|
二、撤销组或用户权限的REVOKE语句
REVOKE语句的基本功能就是撤消现有用户或组的指定权限。其基本语法为:
REVOKE {privilege[, privilege,...]}ON {TABLE table|OBJECT object|
CONTAINTER container} FROM {authorizationname[, authorizationname,...]}
REVOKE语句包含以下部分:
部分
|
说明
|
privilege
|
将被吊销的权限。使用以下关键字指定权限:Select、Delete、Insert、Update、Drop、SelectSECURITY、UpdateSECURITY、DBPASSWORD、UpdateIDENTITY、Create、SelectSCHEMA、SCHEMA和UpdateOWNER。
|
table
|
任何有效的表名。
|
object
|
可以包含任何非表对象。存储查询(视图或过程)就是一个示例。
|
container
|
有效容器的名称。
|
Authorizationname
|
用户名或组名。
|
三、可以授予或撤销的组或用户权限列表
权限
|
可应用于
|
说明
|
Select
|
表、对象、容器
|
允许某用户读取数据及访问特定表、对象及容器的设计。
|
Delete
|
表、对象、容器
|
允许某用户从特定的表、对象及容器中删除数据。
|
Insert
|
表、对象、容器
|
允许某用户向特定的表、对象及容器中插入数据。
|
Update
|
表、对象、容器
|
允许某用户更新特定的表、对象及容器中的数据。
|
Drop
|
表、对象、容器
|
允许某用户删除特定的表、对象或容器。
|
SelectSECURITY
|
表、对象、容器
|
允许某用户查看为特定表、对象或窗口设置的许可属性。
|
UpdateSECURITY
|
表、对象、容器
|
允许某用户修改为特定表、对象或窗口设置的许可属性。
|
UpdateIDENTITY
|
表
|
允许某用户更改自动编号列中的值。
|
Create
|
表、对象、容器
|
允许某用户创建一个新的表、对象或容器。
|
SelectSCHEMA
|
表、对象、容器
|
允许某用户查看特定表、对象或容器的设计。
|
SCHEMA
|
表、对象、容器
|
允许某用户修改特定表、对象或容器的设计。
|
UpdateOWNER
|
表、对象、容器
|
允许某用户更改特定表、对象或容器的所有者。
|
ALL PRIVILEGES
|
全部
|
给某用户有关某特定表、对象、容器或数据库的全部的许可,包括管理权限。
|
CreateDB
|
数据库
|
允许某用户创建一个全新的数据库。
|
EXCLUSIVECONNECT
|
数据库
|
允许某用户以独占方式打开一个数据库。
|
CONNECT
|
数据库
|
允许某用户打开某一数据库。
|
ADMINDB
|
数据库
|
允许某用户管理某一数据库。
|
四、授予或撤销组或用户的权限示例
下面的SQL语句将对表“Student”的查询权限授予用户“TIM”:
GRANT Select ON
TABLE Student TO tim;
再如,下面的语句将对表“TEST”的更新权限授予“USERS”组:
GRANT Update ON
TABLE TEST TO USERS;
我们也可以将多个权限一次授予一个用户或组,如:
GRANT Select,
Insert, Delete, Update ON TABLE STUDENT TO TIM;
与授予权限相把的过程就是回收权限,也就是撤销分配给用户或组的权限,例如:
下面的SQL语句将从用户“TIM”处回收对表“STUDENT”的查询权限:
REVOKE Select ON
TABLE Student FROM tim;
下面的SQL语句将回收“USERS”组的对表“TEST”的更新权限:
REVOKE Update ON
TABLE TEST TO USERS;
当然也可以一次回收分配组用户或组的多个权限,例如:
REVOKE Select,
Insert, Delete, Update ON TABLE STUDENT FROM TIM;