首页 > 开发 > 综合 > 正文

GRANT用法简介

2024-07-21 02:12:47
字体:
来源:转载
供稿:网友

sql server 2000的grant语句用于向用户、角色和组授予使用数据库对象以及运行某些存储过程和函数的权限。

grant的语法非常简单——虽然它是sql server 2000中功能最强大的语句之一。下面的例子授予皮特(pete)对pubs数据库中的authors表进行 insert、update和delete的权限。with grant option表示皮特也可以用这些语句来向其它用户授权。use pubs
go

grant insert, update, delete
on authors
to pete
with grant option
go

你也可以授予皮特all权限,这样他还可以使用create database、create function、create rule、create table、backup database以及其它语句。不过,我们一般都希望限制用户的访问和操作数据库的权限。

除了对单独的用户外,你还可以对sql server角色、windows nt用户以及windows nt组使用grant语句。如果用户和(或者)组或者角色之间存在授权冲突,那么按照最严格的授权处理。不能对其它数据库的用户、角色或者组进行授权。

你可以用revoke语句来解除已经授予的权限。你也可以用deny语句来停止阻止用户从他(她)所从属的组(或者角色)那里来得到授予该组(或者角色)的权限。

在下面的例子中,我们将会看到拥有pubs数据库中的authors表权限的人有哪些。然后,我们给予皮特访问数据库的权限。最后,我们再给他对authors表执行insert、update和delete的权限。

首先,我们运行sp_helpprotect来看看authors表格上哪些人有哪些权限。

exec sp_helprotect authors
go

结果应该与下面类似:

owner  object   grantee  grantor   protecttype  action            column
-----        ------       -------    -----------    -------------     ---------             -------
dbo       authors  guest    dbo           grant              delete
dbo       authors  guest    dbo           grant              insert
dbo       authors  guest    dbo           grant              references    (all+new)
dbo       authors  guest    dbo           grant              select             (all+new)
dbo       authors  guest    dbo           grant              update          (all+new)

由于在皮特得到访问数据库的权限之前,我们不能向他授以执行任何语句的权限,因此,我们应该首先让皮特获得访问数据库的权限。(实际上,为了可以使用已授予的权限,皮特需要一个sql server 2000登录帐号和访问该数据库的许可。这个例子为一个sql server 2000中尚未存在的用户创建访问数据库的许可。)

exec sp_grantdbaccess pete
go

你将会看到“granted database access to 'pete”。

让我们运行较早前提到的grant insert, update, delete语句。现在重新执行sp_helpprotect,最后三行应该显示皮特以及他刚才所获得授权的信息。

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表