[英]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
您无法撤消您未授予的权限。 看起来您想要:
user2
有权选择 user2
许可工作如下:
优先级规则是任何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.