授予数据库的完整 SQL Server 权限
Posted
技术标签:
【中文标题】授予数据库的完整 SQL Server 权限【英文标题】:Granting Full SQL Server Permissions for a Database 【发布时间】:2019-04-30 18:39:43 【问题描述】:如何让用户(创建时未登录)完全控制包含的数据库,而不必指定该数据库的名称,例如 GRANT CONTROL ON DATABASE::DatabaseName TO UserName,但不使用数据库名称?我认为它将包括 GRANT ALTER ANY SCHEMA TO UserName,但我不确定我还需要授予什么,或者是否有更好的方法。谢谢。
【问题讨论】:
user
在这里是一个加载项。您是指 Windows 登录、服务器级 SQL Auth 登录、该数据库中包含的用户,还是其他? “完全控制”是指他们可以在该数据库中执行任何操作(创建对象、读取和写入数据等),或者也可以对执行任何操作(重命名它、备份、删除等)?
好点。我编辑了我的问题,提到用户是在没有登录的情况下创建的)。
我希望他们能够在该数据库中做任何事情,而不是对它(根据您的示例)。
【参考方案1】:
如果您真的希望他们能够在该数据库中执行任何操作,您只需将他们添加到db_owner
角色:
USE ContainedDatabase;
GO
ALTER ROLE db_owner ADD MEMBER [username];
如果您想更细化,可以将它们添加到较小的角色中,例如db_ddladmin
、db_securityadmin
等。您可以在此处查看内置角色列表:
每个角色固有的权限:
Permissions of Fixed Database Roles如果这些不适合,您可以create your own roles,将您的用户添加到该角色,并为您创建的该角色授予特定权限(和/或将它们添加到其他角色)。将权限应用到角色而不是直接应用到用户之间的区别只是重用 - 如果您再添加五个要应用相同权限的用户,您只需将它们添加到自定义角色,而不是应用那些细粒度的权限或所有 5 个用户的角色。
【讨论】:
这正是我所需要的。为了完整起见,您能否告诉我需要哪些 GRANT(没有数据库名称)来执行与将用户添加到 db_owner 相同的操作?GRANT CONTROL DATABASE
- 这与db_owner
中的情况并不完全相同,但它与您将获得的一样接近。这是第二个链接。【参考方案2】:
-
打开 SQL Server Management Studio 并连接到您的服务器。
在对象资源管理器中,展开服务器下的“Security”文件夹。
右键单击“登录”文件夹并选择“新建登录...”
以“域\用户名”格式添加用户名。您也可以通过将其更改为“Domain\GroupName”来添加域组。
5.如果您希望此用户拥有对 SQL Server 实例的完全访问权限,您可以选择“服务器角色”选项卡。添加角色“sysadmin”将赋予他们对服务器的完全访问权限,以执行更新数据库、备份数据库、删除数据库等操作。
单击确定,您的用户将被创建并可以访问您的数据库。
选择“用户映射”选项卡。在此屏幕的上半部分,选中数据库名称旁边的框。突出显示数据库并选中复选框以将用户映射到数据库后,您可以向用户添加角色成员资格。用于访问数据库。
单击确定,您的用户将被创建并可以访问您的数据库。【讨论】:
以上是关于授予数据库的完整 SQL Server 权限的主要内容,如果未能解决你的问题,请参考以下文章
如何向 sql server 用户授予 sendmail 权限?
SQL Server - 如何将所有数据库的读取权限授予登录名?