Подтвердить что ты не робот

Ограничить доступ к SQL Server для доступа только к одной базе данных

У меня есть сервер SQL Server, на котором установлено около 50 баз данных.

Я хочу создать новый Login для клиента, который хочет иметь доступ к своей базе данных.

Но я не хочу предоставлять им доступ к другим 49 базам данных.

Как я могу это сделать?

4b9b3361

Ответ 1

  1. Подключитесь к своему экземпляру SQL-сервера с помощью студии управления
  2. Перейти в раздел Безопасность → Вход в систему → (ПРАВО НАЖМИТЕ) Новый вход
  3. заполните данные пользователя
  4. В разделе "Сопоставление пользователей" выберите базы данных, к которым пользователь должен иметь доступ, и настройте их

.UPDATE:

Вы также захотите перейти к Security -> Server Roles, и для public проверьте разрешения для TSQL Default TCP/TSQL Default VIA/TSQL Local Machine/TSQL Named Pipes и удалите разрешение connect.

Ответ 2

Я думаю, это то, что нам нравится делать.

--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

Если вы уже создали пользователя и были назначены в эту базу данных ранее, выполнив

USE [yourDB] 
CREATE USER hello FOR LOGIN hello WITH DEFAULT_SCHEMA=[dbo] 
GO

затем удалите его, выполнив приведенные ниже действия, и выполните действия.

   USE yourDB;
   GO
   DROP USER newlogin;
   GO

Для получения дополнительной информации перейдите по ссылкам:

Скрытие баз данных для входа в Microsoft Sql Server 2008R2 и выше

Ответ 3

Для кого-то еще, задающегося вопросом, как это сделать, у меня есть следующее решение для SQL Server 2008 R2 и более поздних версий:

USE master
go
DENY VIEW ANY DATABASE TO [user]
go

Это будет соответствовать точно указанному выше требованию.

Ответ 4

это к тому, что было выбрано как правильный ответ. У него есть один пропущенный шаг, который, если он не выполнен, пользователь все равно сможет получить доступ к остальной части базы данных. Во-первых, сделайте так, как предложил @DineshDB

  1. Connect to your SQL server instance using management studio
   2. Goto Security -> Logins -> (RIGHT CLICK) New Login
   3. fill in user details
   4. Under User Mapping, select the databases you want the user to be able to access and configure

ниже пропущен шаг:

5. Under user mapping, ensure that "sysadmin" is NOT CHECKED and select "db_owner" as the role for the new user.

И это все.