Cur*_*urt 31 sql-server-2008 login-control
我有一台SQL Server服务器,上面有大约50个数据库.
我希望为Login希望访问其数据库的客户创建一个新的.
但我不想让他们访问其他49个数据库.
我怎样才能做到这一点?
kta*_*kta 51
我认为这是我们非常喜欢做的事情.
--Step 1: (create a new user)
create LOGIN hello WITH PASSWORD='foo', CHECK_POLICY = OFF;
-- Step 2:(deny view to any database)
USE master;
GO
DENY VIEW ANY DATABASE TO hello;
-- step 3 (then authorized the user for that specific database , you have to use the master by doing use master as below)
USE master;
GO
ALTER AUTHORIZATION ON DATABASE::yourDB TO hello;
GO
Run Code Online (Sandbox Code Playgroud)
如果您已经创建了一个用户并且之前已经分配给该数据库
USE [yourDB]
CREATE USER hello FOR LOGIN hello WITH DEFAULT_SCHEMA=[dbo]
GO
Run Code Online (Sandbox Code Playgroud)
然后通过执行以下操作将其删除并按照步骤操作
USE yourDB;
GO
DROP USER newlogin;
GO
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请点击链接:
隐藏Microsoft Sql Server 2008R2及更高版本上的登录数据库
Irf*_*rfy 25
更新:
您还需要转到Security -> Server Roles,并public检查权限TSQL Default TCP/TSQL Default VIA/TSQL Local Machine/TSQL Named Pipes并删除connect权限