【问题标题】:How to assign select permission for all tables?如何为所有表分配选择权限?
【发布时间】:2019-08-10 04:26:28
【问题描述】:

我想为用户分配所有表的选择权限,并且我需要对将添加到数据库的每个表都使用此权限。

我可以通过执行我的代码结果为我的用户(data_reader)分配当前在数据库中的所有表的选择权限:

select 'grant select on object::'+s.name+'.'+t.name+' to data_reader'
from sys.schemas s
inner join sys.tables t on s.schema_id=t.schema_id

我的问题是,如果将任何表添加到数据库中,我必须在该表上为 data_reader 执行授权选择,所以它可能会被遗忘。

我进行了很多搜索,但我找不到一种方法可以将所有模式中的所有表的选择权永远授予我的用户。

【问题讨论】:

  • 当你说data_reader时,你是指db_datareader吗?一定有人在你的数据库中弄乱了它的默认设置,因为默认情况下该角色可以从所有表中读取(不需要特定的每个表权限) - docs.microsoft.com/en-us/sql/relational-databases/security/…
  • 阅读这篇文章,并检查是否有人没有为您正在谈论的角色(当您说 data_reader 时)发布所有表的 GRANT - mssqltips.com/sqlservertip/2894/…
  • No data_reader 是我创建的数据库用户。我想将选择所有表和未来表分配给 data_reader 用户,这是我创建的数据库用户。
  • @CaiusJard 对不起,我忘了提到你。谢谢你的链接;)
  • @CaiusJard 我阅读了链接。我认为最好的选择是将 db_datareader 分配给我的用户。我想直接将grant select分配给我的用户,但是我搜索了很多,我认为没有任何办法感谢您提到db_datareader,它对我帮助很大。谢谢;)

标签: sql sql-server select permissions


【解决方案1】:

如果您的所有表都在 dbo 架构中,那么这将是:

GRANT SELECT ON SCHEMA :: [dbo] TO specialrole

试试看:

GRANT {  { schemaPrivileges        | SELECT [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
   | { schemaObjectPrivileges  | SELECT [ PRIVILEGES ] } ON FUTURE <object_type>S IN SCHEMA <schema_name> }
TO [ ROLE ] <role_name> [ WITH GRANT OPTION ]

【讨论】:

  • 有什么方法可以将选择权限授予数据库用户?我的数据库上有 20 个模式,可能会增加更多。有什么方法或者我应该在创建任何模式后授予选择权限?谢谢
  • 架构是数据库级别的安全对象,包含在权限层次结构中的父数据库中。以我的拙见,您应该在创建任何架构后授予选择权限。
  • 非常感谢。如果您有兴趣阅读我的问题下的 cmets。在 CaiusJard 和您的回复之后,我进行了更多搜索,我想我必须按照您的方式将 select 直接分配给我的用户或将 db_datareader 角色分配给我的用户。感谢您的帮助;)
【解决方案2】:

在映射到所需数据库时赋予db_datareader权限即可:

USE [DBName]
GO
ALTER ROLE [db_datareader] ADD MEMBER [user_name]
GO

【讨论】:

    【解决方案3】:

    我在 SQL Server 2017 上检查了这个问题

    我用堆栈名称创建了一个登录名并在没有任何权限的情况下映射到数据库用户

    然后我授予用户选择权限

    grant select to Stack;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2017-06-03
      • 2015-02-16
      • 1970-01-01
      • 2013-01-04
      相关资源
      最近更新 更多