Разница между пользователем и логином в SQL Server - PullRequest
164 голосов
/ 16 июля 2009

Я недавно сталкивался со многими различными областями SQL Server, с которыми я обычно не связываюсь. Одна из них, которая меня смутила, это область логинов и пользователей. Похоже, это должна быть довольно простая тема ...

Похоже, что каждый логин может иметь только 1 пользователя, и у каждого пользователя может быть только 1 логин.

Логин может быть связан с несколькими таблицами, таким образом, привязывая этого пользователя ко многим таблицам.

Итак, мой вопрос, почему даже есть логин и пользователь? они кажутся почти одинаковыми. В чем различия или что мне не хватает?

Ответы [ 5 ]

187 голосов
/ 16 июля 2009

«Логин» предоставляет основную запись в СЕРВЕР.

«Пользователь» предоставляет запись для входа в одну БАЗУ ДАННЫХ.

Один «Логин» может быть связан со многими пользователями (по одному на базу данных).

Каждый из вышеперечисленных объектов может иметь разрешения, предоставленные ему на его собственном уровне. См. Следующие статьи для объяснения каждого

30 голосов
/ 16 июля 2009

Одной из причин того, что оба варианта, является проверка подлинности сервером базы данных, но авторизация может быть ограничена базой данных. Таким образом, если вы перенесете свою базу данных на другой сервер, вы всегда можете переназначить отношение входа пользователя в систему на сервере базы данных, но ваша база данных не должна изменяться.

22 голосов
/ 16 сентября 2015

Я думаю, что есть действительно хорошее сообщение в блоге MSDN на эту тему от Laurentiu Cristofor:

Первая важная вещь, которую нужно понять о SQL Server безопасность заключается в том, что задействованы две области безопасности - сервер и база данных. Область сервера охватывает несколько баз данных царства. Вся работа выполняется в контексте какой-то базы данных, но чтобы получить чтобы сделать работу, нужно сначала иметь доступ к серверу, а затем иметь доступ к базе данных.

Доступ к серверу предоставляется через логины. Есть два основных категории логинов: аутентифицированные логины SQL Server и Windows авторизованные логины. Я обычно буду ссылаться на них, используя более короткий имена логинов SQL и логинов Windows. Windows аутентифицированные логины логины могут быть сопоставлены с пользователями Windows или логины сопоставлены с Windows группы. Итак, чтобы иметь возможность подключиться к серверу, необходимо иметь доступ через один из этих типов или логины - логины обеспечивают доступ к область сервера.

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

Пользователи отображаются в логины, и отображение выражается SID свойство логинов и пользователей. Логин сопоставляется с пользователем в базе данных, если их значения SID идентичны. В зависимости от типа входа мы можем поэтому есть классификация пользователей, которая имитирует вышеупомянутое категоризация для логинов; Итак, у нас есть пользователи SQL и пользователи Windows и последняя категория состоит из пользователей, сопоставленных с именами пользователей Windows и пользователей, сопоставленных с именами групп Windows.

Давайте сделаем шаг назад для быстрого обзора: логин предоставляет доступ на сервер и для дальнейшего доступа к базе данных, пользователь сопоставляется для входа должен существовать в базе данных.

это ссылка на полный пост.

21 голосов
/ 08 июля 2014

Короче говоря,

Логины будут иметь доступ к серверу.

и

Пользователи будут иметьдоступ к базе данных.

6 голосов
/ 12 сентября 2014

Я думаю, что это очень полезный вопрос с хорошим ответом. Просто, чтобы добавить мои два цента от MSDN Создать страницу входа :

Логин - это субъект безопасности или объект, который может быть аутентифицирован защищенной системой. Пользователям требуется логин для подключения к SQL Server. Вы можете создать имя входа на основе участника Windows (например, пользователя домена или группы доменов Windows) или создать имя входа, которое не основано на субъекте Windows (например, имя входа SQL Server).

Примечание:
Чтобы использовать проверку подлинности SQL Server, компонент Database Engine должен использовать проверку подлинности в смешанном режиме. Для получения дополнительной информации см. Выбор режима аутентификации.

Как участник безопасности, разрешения могут быть предоставлены для входа в систему. Область входа в систему - весь компонент Database Engine. Чтобы подключиться к конкретной базе данных на экземпляре SQL Server, имя входа должно быть сопоставлено с пользователем базы данных. Разрешения внутри базы данных предоставляются и запрещаются пользователю базы данных, а не логину. Разрешения, которые имеют область действия всего экземпляра SQL Server (например, разрешение CREATE ENDPOINT), могут быть предоставлены для входа в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...