我在SQL中创建了一个用户,该用户只希望对我的数据库的4个表具有读/写权限:
CREATE LOGIN MyUser
WITH PASSWORD = 'xyqe123';
USE [EODB];
GO
CREATE USER MyUser FOR LOGIN MyUser;
GO
现在,通过使用(强力同类)简化的,成本无效的方法,我定义了:
GRANT select,insert,update,delete ON [MyDB].[dbo].[t1] TO [MyUser]
GO
GRANT select,insert,update,delete ON [MyDB].[dbo].[t2] TO [MyUser]
GO
GRANT select,insert,update,delete ON [MyDB].[dbo].[t3] TO [MyUser]
GO
GRANT select,insert,update,delete ON [MyDB].[dbo].[t4] TO [MyUser]
GO
Deny select,insert,update,delete ON [MyDB].[dbo].[t5] TO [MyUser]
GO
Deny select,insert,update,delete ON [MyDB].[dbo].[t6] TO [MyUser]
GO
Deny select,insert,update,delete ON [MyDB].[dbo].[t7] TO [MyUser]
GO
.......
.......///continues for 14 more tables
以上内容满足了我的需求,但是正如我所说的,这是“愚蠢的”。我尝试的是将[MyUser]设置为[denydatareader]
和[denydatawriter]
模式,并在授予4个表的权限后,但没有成功。
我的问题是如何使用尽可能少的陈述来实现我的目标?
而不是将用户添加到类似datareader
或denydatareader
仅使用前4条语句的组中。只要您没有将用户添加到任何组,用户将被限制在这4个表中。
GRANT select,insert,update,delete ON [MyDB].[dbo].[t1] TO [MyUser]
GO
GRANT select,insert,update,delete ON [MyDB].[dbo].[t2] TO [MyUser]
GO
GRANT select,insert,update,delete ON [MyDB].[dbo].[t3] TO [MyUser]
GO
GRANT select,insert,update,delete ON [MyDB].[dbo].[t4] TO [MyUser]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句