繁体   English   中英

sql server授予,撤消对用户的权限

[英]sql server grant, revoke permission to a user

我编写了一个简单的C#代码,该代码连接到sql-server数据库并执行查询:

        cmd = new SqlCommand(txtQuery.Text.ToString().Trim(), con);
        cmd.ExecuteNonQuery();
  • 在我的数据库中,我有一个名为myTB的表。 我也有两个用户:user1(所有者),user2(创建新用户)

  • 我使用user2的用户名和密码登录 (连接到DB)!

  • 我可以使用以下查询访问由user1创建的表:

    “从user1.myTB选择*”

    (我不知道为什么这个查询会出错:“ select * from myTB”,现在就算了!)

  • 现在,我想从user2 撤消 “选择”权限。 我的意思是我不希望user2在由user1创建的myTB表上执行选择查询

  • 我该怎么办是我遇到了问题! 我使用了这个查询,但是什么都没有改变!

Q1:“从用户2撤消选择ON user1.myTB

再次,user2可以从user1.myTB中选择*! 为什么!

请帮我解决一下这个。 谢谢。

user2可能是从角色成员资格获得权限的。

跑:

use [<YourDatabase>]
GO

exec sp_helpuser

在第一列中找到用户,然后查看第二列。 用户是db_datareader还是db_owner的成员?

如果是这样,您可以通过执行以下操作来撤消成员资格,例如db_datareader:

exec sp_droprolemember 'db_datareader', 'user2'
GO

您无法撤消您未授予的权限。 看起来您想要:

  1. 调查并了解为什么 user2有权选择
  2. 可能拒绝权限来选择user2

许可工作如下:

  • 最初,用户具有来自其团队成员资格的职位(包括公共角色)
  • GRANT明确授予特权
  • REVOKE收回先前授予的特权,还原为具有从组成员身份隐式继承的特权的用户
  • 拒绝否认特权

优先级规则是任何DENY都优先于任何GRANT或继承的特权。 一个人可以通过许多GRANT获得访问权限,但是一个DENY可以撤消该特权。 你不能GRANT / REVOKE / DENY权限,可保护所有者(成员db_owner自己的一切成员的sysadmin对整个服务器上所拥有的一切 )。

谢谢朋友,我已经解决了它,并使用DENY代替REVOKE:

拒绝选择ON user1.myTB TO user2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM