本文将介绍如何只想让某个用户访问数据库特定的表或视图,达到保密的效果。现有数据库CC下有3张数据表,本例子将设定一个用户,让其只能访问其中的SFC_ZC表。跟着下面的步骤开始做吧。
1、登录SSMS之后选择安全性,右键点击登录名。在弹出的右键菜单中选择【新建登录名】选项。
-
在新建登录名界面中的,常规页面输入新的登录名(本例为user_test)并设定密码。可以取消勾选用户下次登录时必须更改密码选项。最后设定默认数据库为CC。
-
接下来在用户映射页面中,勾选映射CC数据。因为我们这次要分配的是查询权限的用户,所以下方的数据库角色成员身份只勾一个public即可。点击确定按钮完成新用户创建。
-
在CC数据库下点击新建查询,在IDE中输入 grant select on sfc_zc to user_test语句 并执行。该语句的作用是分配sfc_zc表的查询权限给user_test用户。
-
权限分配完成后可以测试一下效果如何。断开数据库连接,用我们刚才新建的user_test用户重新登录数据库。
-
这时我们可以看到CC数据库下面只能看到SFC_ZC这张数据表了,另外两张表都不见了,到此大功告成。
二、设置用户只能查看并访问特定数据库
1.新建登录用户
以管理员身份登陆数据库(权限最高的身份如sa),点击安全性->登录名,右键新建登录名,输入登录名和密码,取消强制实施密码策略。2.将服务器角色设置为public
注意:很重要的一步骤,检查【用户映射】中该用户是否有对应的数据库权限,如果有请把勾去掉,否则会影响第4点的操作结果
3.将public服务器角色的属性->取消查看所有数据库的权限
点击安全性->服务器角色->public,右键属性。点击服务器后如下图取消查看任意数据库的权限或者执行如下SQL:
REVOKE VIEW ANY DATABASE TO [public]4.将待授权的数据库的db_owner指派给刚注册的新用户
在数据库中新建查询,输入下列sql语句。完成对用户权限的设定,做到了新建用户只能查看和操作特定数据库(除系统数据库外)Use [WH_R]//WH_R为数据库名称 go EXEC dbo.sp_changedbowner N'user'//user为刚新建的用户