SqlServer 2012 中如何设置只给其它用户访问自己指定表或视图?
- 在操作使用数据库的大部分时候,我们可能对权限之类的东西设置的很少,但是在某些对安全性有要求的时候,我们则需要限制某个用户访问数据库的权限,比如让某个用户只能看到属于其管理或只需要用到的某几张表或视图,并对指定的表和视图拥有有限的操作权限。
图文向导设置步骤
第1步:以管理员身份或sa账号登录数据库,新建一个新的登录用户。比如:crm
第二步:将该用户需要访问的表或视图所在的数据库映射给该用户,使其能够访问该数据库(此时还没有给任何表、视图的访问权限)。默认架构选择dbo
3、以管理员或sa身份给其他用户分配指定的表、视图或存储过程的操作权限。如给视图名pl_CRM设置访问权限
4、分配完访问和操作的权限之后,使用新建的用户名(比如:crm)进行登录之后,即可对管理员指定的数据库中的表或视图进行权限内的操作
至此已经完成,我们可以该用户能访问的只有我们分配的数据库中的视图(或者表、存储过程)。可以自动动手试下。
代码实现步骤
1、以管理员用户身份登录并打开需要操作的数据库,新建查询,创建一个可访问指定数据库的权限角色
exec sp_addrole [crm]
2、给创建的角色赋予查看指定的视图的权限,视图名为:dbo.pl_crm,角色名为创建的角色 crm
grant select on dbo.pl_crm to crm
3、添加只允许访问指定视图的用户;,用户名:crm 密码:crm 默认的数据库:crm
exec sp_addlogin 'crm ','crm ','HCRM'
4、将用户和角色进行绑定(即给用户赋予访问指定视图的权限) , ‘用户’,‘密码’,‘角色’
exec sp_adduser 'crm','crm','crm'
5、最后使用新创建的用户名、密码登录,可以看到该用户下面只有一个可访问和操作的视图。自己可以试下。
exec sp_addrole crm
grant select on dbo.pl_crmto crm
exec sp_addlogin 'crm','crm','crm'
exec sp_adduser 'crm','crm','crm'