第 2 课:配置数据库对象的权限
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Analytics Platform System (PDW)
注意
开始使用 Transact-SQL 查询学习路径提供了更深入的内容以及实践示例。
授予用户访问数据库的权限涉及三个步骤。 首先,创建登录名。 使用登录名,用户可以连接到 SQL Server 数据库引擎。 然后将登录名配置为指定数据库中的用户。 最后,授予该用户访问数据库对象的权限。 本课介绍了这三个步骤,并介绍了如何将视图和存储过程创建为对象。
注意
本课程依赖第 1 课 - 创建数据库对象中创建的对象。 请在学习第 2 课之前,先完成第 1 课。
先决条件
若要完成本教程,需要 SQL Server Management Studio 以及针对 SQL Server 实例的访问权限。
如果不能访问 SQL Server 实例,请从以下链接选择平台。 如果选择 SQL 身份验证,请使用 SQL Server 登录凭据。
- Windows:下载 SQL Server 2022 开发人员版
- Linux:在容器中下载 SQL Server 2022。
期待您的反馈 :如果在本文中发现过时或不正确的内容(如步骤或代码示例),请告诉我们。 可以单击此页底部的“反馈” 部分中的“本页” 按钮。 我们通常在第二天阅读有关 SQL 的每项反馈。 谢谢。
创建登录名
若要访问 数据库引擎,用户需要有登录名。 登录名可以将用户身份表示为 Windows 帐户或 Windows 组成员,登录名也可以是仅存在于 SQL Server 中的 SQL Server登录名。 应该尽可能使用 Windows 身份验证。
默认情况下,计算机上的管理员具有对 SQL Server的完全访问权限。 在本课中,我们需要一个具有更少特权的用户;因此,您将在计算机上创建一个新的本地 Windows 身份验证帐户。 为此,您必须是计算机上的管理员。 然后授予该新用户访问 SQL Server 的权限。
创建新的 Windows 帐户
- 选择“开始”后,选择“运行”,在“打开”框中,键入
%SystemRoot%\system32\compmgmt.msc /s
,然后选择“确定”打开“计算机管理”程序。 - 在“系统工具”下,展开“本地用户和组”,右键单击“用户”,然后选择“新建用户”。
- 在“用户名”框中,键入“Mary”。
- 在“密码”和“确认密码”框中,键入强密码,然后选择“创建”创建新的本地 Windows 用户。
创建 SQL 登录名
在 SQL Server Management Studio的查询编辑器窗口中,键入并执行以下代码(将 computer_name
替换为您计算机的名称)。 FROM WINDOWS
表示 Windows 对用户进行身份验证。 除非连接字符串指示其他数据库,否则可选的 DEFAULT_DATABASE
参数将 Mary
连接到 TestData
数据库。 此语句引入了分号作为 Transact-SQL 语句的可选结束符。
CREATE LOGIN [computer_name\Mary]
FROM WINDOWS
WITH DEFAULT_DATABASE = [TestData];
GO
这将授权通过计算机的身份验证的用户名 Mary
访问此 SQL Server实例。 如果计算机上存在多个 SQL Server 实例,则必须在 Mary
必须访问的每个实例上创建登录名。
备注
因为 Mary
不是域帐户,所以此用户名只能在此计算机上进行身份验证。
授予对数据库的访问权限
现在 Mary
帐户具有访问此 SQL Server 实例的权限,但是不具有访问数据库的权限。 在授权该帐户作为数据库用户之前,该帐户甚至无权访问默认数据库 TestData
。
若要授予 Mary
访问权限,请切换到 TestData
数据库,再使用 CREATE USER 语句将登录名映射到名为 Mary
的用户。
在数据库中创建用户
键入并执行下列语句(将 computer_name
替换为您计算机的名称),以授予 Mary
访问 TestData
数据库的权限。
USE [TestData];
GO
CREATE USER [Mary] FOR LOGIN [computer_name\Mary];
GO
现在,对于 SQL Server 和 TestData
数据库,Mary 都具有访问权限。
创建视图和存储过程
作为管理员,可以从 Products
表和 vw_Names
视图执行 SELECT,以及执行 pr_Names
过程;但是 Mary 不能。 若要授予 Mary 必要的权限,请使用 GRANT 语句。
授予对存储过程的权限
执行以下语句将 Mary
存储过程的 EXECUTE
权限授予 pr_Names
。
GRANT EXECUTE ON pr_Names TO Mary;
GO
在这种情况下,Mary 只能通过使用存储过程访问 Products
表。 如果您希望 Mary 能够对视图执行 SELECT 语句,则您还必须执行 GRANT SELECT ON vw_Names TO Mary
。 若要删除对数据库对象的访问权限,请使用 REVOKE 语句。
注意
如果表、视图和存储过程不是由同一架构拥有,则授予权限将变得更复杂。
关于 GRANT
必须具有 EXECUTE 权限才能执行存储过程。 必须具有 SELECT、INSERT、UPDATE 和 DELETE 权限才能访问和更改数据。 GRANT 语句还用于其他权限,如创建表的权限。
后续步骤
下一篇文章将介绍如何删除在其他课程中创建的数据库对象。
转到下一篇文章,了解详细信息: