15.3 SQL Server用户授权
SQL Server用户授权(GRANT)
简介
使用CREATE USER语句创建用户后,该用户对数据库对象(如表、视图和索引)没有任何权限。
要允许用户与数据库对象交互,需要向用户授予权限。例如,可以授予权限,以便用户可以从表中查询数据。
GRANT语句可以向主体授予对安全资源的权限。
安全资源是SQL Server授权系统管理访问权的资源。例如,表是安全资源。
主体是可以请求SQL Server资源的实体。例如,用户是SQL Server中的主体。
GRANT基本语法:
| GRANT permissions | |
| ON securable TO principal; |
- 首先,在
GRANT之后指定一个或多个权限。如果有多个权限,则需要使用逗号分隔。 - 其次,在
ON关键字之后指定一个安全资源。 - 第三步,在
TO关键字之后指定主体。
示例
首先,创建带人员表的HR数据库:
| USE master; | |
| GO | |
| DROP DATABASE IF EXISTS HR; | |
| GO | |
| CREATE DATABASE HR; | |
| GO | |
| USE HR; | |
| CREATE TABLE People ( | |
| Id int IDENTITY PRIMARY KEY, | |
| FirstName varchar(50) NOT NULL, | |
| LastName varchar(50) NOT NULL | |
| ); | |
| INSERT INTO People (FirstName, LastName) | |
| VALUES ('John', 'Doe'), | |
| ('Jane', 'Doe'), | |
| ('Upton', 'Luis'), | |
| ('Dach', 'Keon'); |
然后创建一个登录peter
| CREATE LOGIN peter | |
| WITH PASSWORD='XUnVe2di45.'; |
第三步,在HR数据库中为peter登录创建一个用户peter:
| USE HR; | |
| CREATE USER peter | |
| FOR LOGIN peter; |
第四步,使用peter用户连接SQL Server。您将看到用户peter可以访问HR数据库,但不能查看任何表。
第五步,切换到系统管理员连接,并在People表中将SELECT权限授予用户peter:
| GRANT SELECT | |
| ON People TO peter; |
第六步,用户peter可以看到People表并从中选择数据:
| SELECT * FROM People; |
但是,用户peter无法将数据插入People表:
| INSERT INTO People(FirstName, LastName) | |
| VALUES('Tony','Blair'); |
SQL Server报如下错误:
| The INSERT permission was denied on the object 'People', database 'HR', schema 'dbo'. |
同理,peter也不能从People中删除数据库:
| DELETE FROM People | |
| WHERE Id = 1; | |
| -- error:The DELETE permission was denied on the object 'People', database 'HR', schema 'dbo'. |
第五步,向用户peter授予People表上的INSERT和DELETE权限:
| GRANT INSERT, DELETE | |
| ON People TO peter; |
第六步,切换到用户peter的连接,并在People表中插入新行:
| INSERT INTO People(FirstName, LastName) | |
| VALUES('Tony','Blair'); |
现在,用户peter可以在People表中插入数据和删除数据。
分类: SQL Server
漫思
浙公网安备 33010602011771号