限制用户查看/访问默认数据库
问题描述:
我有一个用户在SQL Server Management Studio中设置了用户映射,因此他们只能访问'ReportServer'数据库。限制用户查看/访问默认数据库
当我通过微软Word连接到我的SQL Server中,我给出下面的选项数据库连接:
我不希望这个用户访问,甚至是能够看到master,tempdb或msdb数据库,并且我没有在该用户的用户映射中选择它们。我如何设置它,以便用户无法看到这些数据库?
答
使用DENY查看..
DENY VIEW ANY DATABASE TO testuser;
步骤一般包括..
1.创建登录的默认数据库中的所有数据库是登录
2.创建用户
3 .Deny view
DENY VIEW ANY DATABASE TO testuser;
第一步:
//创建一个默认的数据库登录
1.USE [master]
GO
CREATE LOGIN loginame FROM WINDOWS WITH DEFAULT_DATABASE='testdb'
GO
第二步:
2.创建用户在所有数据库中..
use testdb
create user username for loginname
现在你可以将权限分配给该用户像读取,写入......默认情况下,该用户将只显示一个数据库。
第三步:
DENY VIEW ANY DATABASE TO testuser;--this should be repeated in all databases which you wish to hide from user..
如果你已位于现有login..Then您可以更改默认登录该用户像下面..
Exec sp_defaultdb @loginame='login', @defdb='testdb'
喜那里。这有助于摆脱msdb。但master和tempdb仍然存在。你提到我应该在所有我想隐藏的数据库中重复该代码,但是SQL Studio告诉我,我只能在master db中使用它。 – LeChuck
创建登录,它应该是主DB。对于TempDB你不需要创建登录,默认情况下,所有用户都将登录。所以我建议创建Windows组的所有用户,您可以使用邮件合并和做这个东西。 – TheGameiswar