Создание нового пользователя на сервере БД
Для создания логина для пользователя с правами администратора БД нужно выполнить следующие шаги.
Запустите программу Microsoft SQL Server Management Studio, подключитесь к серверу и откройте папку «Security\Logins».
Нажмите правую кнопку мыши и выберите пункт «New Login» .

Выберите вкладку «General». В поле «Login Name» введите имя пользователя, под которым требуется подключаться к базе данных. Выберите вариант авторизации «SQL Server authentication». В поле Password задайте пароль для этого логина. Уберите галочку «User must change password at next login». В поле Database нужно выбрать базу данных СИСТЕМЫ. В поле Language выберите язык – русский или оставьте .

Нажмите кнопку «ОК» — пользователь с указанным логином и паролем будет создан.
После создания логинов следующая задача администратора – спуститься на уровень базы данных и создать объекты пользователей базы данных.
Откройте папку — «Databases\\Security\Users». Нажмите правую кнопку мыши и выберите пункт «New User» .

При создании пользователя Вам нужно будет указать:
— Имя пользователя (User name), к которому применяются те же правила, что и для других объектов SQL Server.
— Логин (Login name), который будет назначен пользователю этой базы данных.
— Какие роли базы данных (Role members) будут ему назначены.
— Для администратора выставить флажок – db_owner. Этой роли автоматически предоставляются полные права на базу данных.
— Для остальных ролей (пользователь, оператор, гость) выставить флажки db_datareader и db_datawriter. Эти встроенные роли дают право просматривать и изменять соответственно любую информацию в базе данных .
Создание объекта пользователей базы данных:
Как в MS SQL Server создать пользователя

На первый взгляд, в MS SQL нестандартная система учетных записей. В ней существуют логины и пользователи.
Логины — это понятие всего сервера SQL. У них могут быть права на какие-то административные задачи (например бэкап). Им можно дать права на какие-то действия с базой или таблицой. Для того что бы у логина были права на базу на основе него создается пользователь. Они могут быть как SQL логином, так и созданные на основе существующих пользователя Windows или AD. Например тот пользователь, который устанавливал MS SQL так же добавился в список логинов. Рекомендуется использовать логины на основе Windows или AD, а не SQL логины.
Пользователи — это понятие в рамках одной базы. Им нельзя дать права по административной части, но можно дать права на работу с базой.
Оба типа учетных записи можно создать как в графике, так и с помощью запроса T-SQL
T-SQL CREATE USER, CREATE LOGIN
Перейдем в базу данных, в которой мы работаем:
USE pubs
Для создания логина SQL выполним:
CREATE LOGIN Anton WITH PASSWORD='Password1910'
Anton — имя логина. Password1910 — пароль. У этого логина уже будут права на вход.
Посмотреть что этот логин создался можно так:

Под номером 3 — это кнопка обновления. Может понадобится т.к. в графике изменения происходят не моментально.
Для создания пользователя привязанного к логину нужно выполнить:
CREATE USER AntonUser FOR LOGIN Anton
Отмечу, что пользователь создасться в той базе, откуда мы выполняем запрос.
Что бы просто создать пользователя нужно:
CREATE USER JustUser WITHOUT LOGIN
Где JustUser — просто пользователь
Созданных пользователей можно увидеть так:

Пользователи создаются без каких либо прав на базу.
T-SQL GRANT
GRANT в пер. «Разрешение» дает права на какое-то действие.
Что бы дать пользователю право получать данные из какой-то таблицы нужно выполнить:
GRANT SELECT ON dbo.authors TO AntonUser
Если мы хотим зайти под созданным пользователем нам нужно выполнить ряд действий. Дело в том, что по умолчанию аутентификация по логинам SQL отключена (разрешена только Windows). Для этого зайдем в свойства сервера:

Затем в «Безопасность» и включи аутентификация SQL
Теперь мы сможем зайти под логином SQL. Для этого сделаем следующее — откроем новое окно запросов Ctr + N или нажмем кнопку:

Важно сделать так, что бы у нас было 2 окошка для запросов до того как мы сменем пользователя. Благодаря этому у нас каждое окно будет работать под разными пользователями
Затем окно подключения пользователя:

Меняем тип подключени на SQL и вводим логин/пароль. Я создавал логин Anton, с паролем Password1910.
После подключения можем увидеть, что одно окно работает под логином Anton, а другое под учетной записью с помощью которой мы проводили операции выше. Так же обратите внимания, что новые пользователь подключен к другой базе (master).

Перейдем к базе, на которую мы давали права. В моем случае это база pubs
USE pubs
Я давал права на SELECT для таблицы dbo.authors. Проверем работу:
SELECT * FROM dbo.authors
Запрос дожен пройти успешно.
Для другой таблицы, на которую мы не давали прав:
SELECT * FROM dbo.titles
The SELECT permission was denied on the object ‘titles’, database ‘pubs’, schema ‘dbo’.
Что бы отозвать разрешение на SELECT нужно заменить GRANT на REVOKE (не забудьте переключится на окно у которого есть разрешение или переключится на предыдущего пользователя):
REVOKE SELECT ON dbo.authors TO AntonUser
Разрешений, которые мы можем выдать пользователю достаточно много. Это основные:

Мы можем так же явно запретить пользователю выполнять определенные запросы. Для этого есть DENY:
DENY SELECT ON dbo.authors TO AntonUser
Что ба дать разрешение на создание таблиц:
USE Pubs; GRANT CREATE TABLE TO Anton;
Теперь создадим логин через графический интерфейс. Нажмем следующие кнопки:

В новом окне мы должны заполнить логин (1) и пароль (3). Под цифрой 2 мы можем увидеть выбор способа аутентификации. В случае Windows мы должны будем выбрать локального пользователя или пользователя AD. Перейдем на закладку Server Roles (4).

Перед нами находятся роли уровня сервера. Все эти роли это просто набор прав. В Microsoft SQL мы так же можем создать и свои группы. Public — роль по умолчанию для всех, кому разрешено вход. Из всех созданных ролей только public можно изменять.

Приведу описание самых популярных ролей:

Перейдем на следующую вкладку (2)
На этой закладке можно сразу создать пользователя и привязать его к базе данных. На этой закладке отображаются 4 базы, которые вы скорее всего раньше не видели. Это системные базы данных, которые хранят в себе транзакции, структуру подключенных баз, скрипты агента и т.д. В области 2 можно дать права на выделенную базу данных.

Коротко о нескольких ролях баз данных:

Роль public, в отличии от всех остальных, можно изменять. Т.е. можно дать роли public разрешение на SELECT и тогда все пользователи с логином смогут это делать. По умолчанию эта ролько может делать запросы типа:
SELECT 1+1
Создание пользователя базы данных
В этой статье описывается создание наиболее распространенных типов пользователей базы данных. Существует 13 типов пользователей. Полный список представлен в статье CREATE USER (Transact-SQL). Все разновидности SQL Server поддерживают пользователей базы данных, но не обязательно все типы пользователей.
Вы можете создать пользователя базы данных с помощью SQL Server Management Studio или с помощью Transact-SQL.
Основные сведения о типах пользователей
Management Studio предоставляет шесть вариантов при создании пользователя базы данных. На следующем рисунке показаны шесть параметров в зеленом поле и указываются значения, которые они представляют.

Выбор типа пользователя
Имя для входа или пользователь, который не сопоставлен с именем для входа
Если вы не знакомы с SQL Server, может быть трудно определить, какой тип пользователя вы хотите создать. Сначала спросите себя, имеется ли имя для входа у пользователя или группы, которым нужен доступ к базе данных? Имена входа в master базе данных являются общими для пользователей, управляющих SQL Server, и для пользователей, которым требуется доступ ко многим или всем базам данных в экземпляре SQL Server. В этой ситуации вы создадите пользователя SQL с именем входа. Пользователь базы данных — это удостоверение входа при подключении к базе данных. Пользователь базы данных может использовать то же имя, что и имя входа, но это не обязательно. В этой статье предполагается, что имя входа уже существует в SQL Server. Дополнительные сведения о создании имени для входа см. в статье Создание логина.
Если у пользователя или группы, которым требуется доступ к базе данных, нет имени входа и если у них есть доступ только к одной или нескольким базам данных, создайте пользователя Windows или пользователя SQL с паролем. Также называется пользователем автономной базы данных. Пользователь автономной базы данных не связан с именем входа в master базу данных. Это отличный выбор, когда вы хотите легко перемещать базу данных между экземплярами SQL Server. Чтобы использовать этот параметр в SQL Server, администратор должен сначала включить содержащиеся базы данных для SQL Server и включить базу данных для хранения. Дополнительные сведения см. в разделе Пользователи автономной базы данных — создание переносимой базы данных.
При подключении в качестве пользователя автономной базы данных необходимо указать имя базы данных в составе строки подключения. Чтобы указать базу данных в СРЕДЕ SQL Server Management Studio (SSMS), в диалоговом окне «Подключение к » выберите пункт «Параметры» и перейдите на вкладку «Свойства подключения».
Выберите пользователя SQL с паролем или пользователем SQL с именем входа на основе имени входа проверки подлинности SQL Server, если пользователь, подключающийся, не может пройти проверку подлинности с помощью проверки подлинности Windows. Это часто происходит, когда пользователи за пределами вашей организации (например, клиенты) подключаются к SQL Server.
Для сотрудников внутри организации лучше выбрать проверку подлинности Windows. Это избавит их от необходимости запоминать еще один пароль. Кроме того, проверка подлинности Windows представляет дополнительные возможности безопасности, такие как Kerberos.
Общие сведения
Пользователь является субъектом безопасности уровня базы данных. Для соединения с базой данных имя входа должно быть сопоставлено с пользователем базы данных. Имя входа может быть сопоставлено с различными базами данных в качестве разных пользователей, но в каждой базе данных ему может быть сопоставлен только один пользователь. В частично автономной базе данных пользователь может быть создан, у него нет имени входа. Дополнительные сведения о пользователях автономной базы данных см. в статье CREATE USER (Transact-SQL). Если гостевой пользователь в базе данных включен, имя входа, которое не сопоставлено с пользователем базы данных, может ввести базу данных в качестве гостевого пользователя.
Как правило, пользователь guest отключен. Не используйте пользователя guest без крайней необходимости.
Как субъектам безопасности, пользователям могут предоставляться разрешения. Областью действия пользователя является база данных. Чтобы подключиться к определенной базе данных в экземпляре SQL Server, необходимо сопоставить имя входа с пользователем базы данных. Разрешения внутри базы данных предоставляются и запрещаются для пользователя базы данных, а не имени входа.
Разрешения
Необходимо разрешение ALTER ANY USER на базу данных.
Создание пользователя с использованием SSMS
- В обозревателе объектов раскройте папку Базы данных .
- Разверните базу данных, в которой создается новый пользователь базы данных.
- Щелкните правой кнопкой мыши папку Безопасность, выберите пункт Создать, а затем Пользователь. .
- В диалоговом окне Пользователь базы данных — создание на странице Общие выберите один из следующих типов пользователей в списке Тип пользователя:
- пользователь SQL с именем для входа
- Пользователь SQL с паролем (если включена содержащаяся база данных)
- Пользователь SQL без имени для входа
- Пользователь, сопоставленный с сертификатом
- Пользователь, сопоставленный с асимметричным ключом
- пользователя Windows
- Когда вы выбираете вариант, остальные параметры в диалоговом окне могут поменяться. Некоторые варианты применимы только к определенным типам пользователей базы данных. Некоторые параметры можно не заполнять. В результате будут использоваться значения по умолчанию. Имя пользователя
Введите имя нового пользователя. Если вы выбрали пользователя Windows из списка типов пользователей, вы также можете выбрать многоточие (. ), чтобы открыть диалоговое окно выбора пользователя или группы. Имя входа
Введите имя входа для пользователя. Кроме того, выберите многоточие (. ), чтобы открыть диалоговое окно выбора входа . Имя входа доступно, если выбрать элемент SQL-пользователь с именем входа или Пользователь Windows в списке Тип пользователя . Пароль и Подтверждение пароля
Введите пароль для пользователей, которым требуется доступ к базе данных. Язык по умолчанию
Укажите язык по умолчанию для пользователя. Схема по умолчанию
Укажите схему, которая будет владеть объектами, созданными пользователем. Кроме того, выберите многоточие (. ), чтобы открыть диалоговое окно «Выбор схемы «. Схема по умолчанию доступна, если выбрать элемент SQL-пользователь с именем входа, SQL-пользователь без имени входаили Пользователь Windows в списке Тип пользователя . Имя сертификата
Укажите сертификат для пользователя базы данных. Кроме того, выберите многоточие (. ), чтобы открыть диалоговое окно «Выбор сертификата «. Имя сертификата доступно, если выбрать элемент Пользователь, сопоставленный с сертификатом в списке Тип пользователя . Имя асимметричного ключа
Введите ключ для пользователя базы данных. Кроме того, выберите многоточие (. ), чтобы открыть диалоговое окно «Выбрать асимметричный ключ«. Имя асимметричного ключа доступно, если выбрать элемент Пользователь, сопоставленный с асимметричным ключом в списке Тип пользователя . - Нажмите ОК.
Дополнительные параметры
Новое диалоговое окно «Пользователь базы данных» также предлагает варианты на четырех других страницах: собственные схемы, членство, защищаемые объекты и расширенные свойства.
- На странице Собственные схемы перечислены все возможные схемы, которые принадлежат новому пользователю базы данных. Чтобы добавить схему для пользователя базы данных или удалить ее, на вкладке Схемы, принадлежащие этому пользователюустановите или снимите флажки для соответствующей схемы.
- На странице Членство приведен список всех ролей, к которым может принадлежать новый пользователь базы данных. Чтобы добавить роль для пользователя базы данных или удалить ее, на вкладке Членство ролей базы данныхустановите или снимите флажки для соответствующей роли.
- На странице Защищаемые объекты перечислены все возможные защищаемые объекты и разрешения на эти объекты, которые могут быть предоставлены для имени входа.
- Страница Расширенные свойства позволяет добавлять пользовательские свойства пользователям базы данных. На этой странице доступны следующие параметры. База данных
Отображает имя выбранной базы данных. Это поле доступно только для чтения. Параметры сортировки
Отображает параметры сортировки, используемые для выбранной базы данных. Это поле доступно только для чтения. Свойства
Просмотрите или укажите расширенные свойства объекта. Каждое расширенное свойство состоит из пары имя/значение метаданных, связанных с объектом. Кнопка с многоточием (. )
Выберите многоточие (. ) после значения, чтобы открыть диалоговое окно «Значение для расширенного свойства«. Введите или просмотрите значение расширенного свойства в этом более просторном окне. Дополнительные сведения см. в разделе Диалоговое окно «Значение для расширенного свойства». Удаление
Удаляет выбранное расширенное свойство.
Создание пользователя с использованием T-SQL
- В обозревателе объектов подключитесь к экземпляру ядра СУБД.
- На панели «Стандартный » выберите «Создать запрос«.
- Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.
-- Creates the login AbolrousHazem with password '340$Uuxwp7Mcxo7Khy'. CREATE LOGIN AbolrousHazem WITH PASSWORD = '340$Uuxwp7Mcxo7Khy'; GO -- Creates a database user for the login created above. CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem; GO
Дополнительные сведения см. в статье CREATE USER (Transact-SQL), которая содержит множество дополнительных примеров Transact-SQL.
См. также
- Субъекты (ядро СУБД)
- Создание имени входа
- CREATE LOGIN (Transact-SQL)
CREATE USER (Transact-SQL)
Добавляет нового пользователя в текущую базу данных. Ниже перечислены 13 типов пользователей с примером базового синтаксиса.
Хотя идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.
Пользователи с именем входа в базе данных master. Это самый распространенный тип пользователей.
- Пользователь с именем входа, задаваемым по учетной записи Windows Active Directory. CREATE USER [Contoso\Fritz];
- Пользователь с именем входа, задаваемым по группе Windows. CREATE USER [Contoso\Sales];
- Пользователь на основе имени входа с помощью проверки подлинности SQL Server. CREATE USER Mary;
- Пользователь на основе имени входа Microsoft Entra. CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Примечание. Субъекты сервера Microsoft Entra (имена входа) в настоящее время находятся в общедоступной предварительной версии для База данных SQL Azure.
Пользователи, проходящие проверку подлинности в базе данных. Рекомендуется для повышения переносимости базы данных.
Всегда разрешено в База данных SQL. Разрешено только в автономной базе данных в SQL Server.
- Пользователь, соответствующий пользователю Windows без имени входа. CREATE USER [Contoso\Fritz];
- Пользователь, соответствующий группе Windows без имени входа. CREATE USER [Contoso\Sales];
- Пользователь в База данных SQL или Azure Synapse Analytics на основе пользователя Microsoft Entra. CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;
- Пользователь автономной базы данных с паролем. (Недоступно в Azure Synapse Analytics.) CREATE USER Mary WITH PASSWORD = ‘********’;
Пользователи, соответствующие субъектам Windows, которые подключаются с помощью имени входа группы Windows
- Пользователь на основе пользователя Windows, не имеющего имени входа, но может подключаться к ядро СУБД через членство в группе Windows. CREATE USER [Contoso\Fritz];
- Пользователь на основе группы Windows, которая не имеет имени входа, но может подключаться к ядро СУБД через членство в другой группе Windows. CREATE USER [Contoso\Fritz];
Пользователи, которые не могут пройти проверку подлинности. Эти пользователи не могут войти в SQL Server или База данных SQL.
- Пользователь без имени входа. Не может выполнить вход, но ему можно предоставлять разрешения. CREATE USER CustomApp WITHOUT LOGIN;
- Пользователь, связанный с сертификатом. Не может выполнить вход, но может предоставлять разрешения и подписывать модули. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
- Пользователь, связанный с асимметричным ключом. Не может выполнить вход, но может предоставлять разрешения и подписывать модули. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;
Синтаксис
-- Syntax for SQL Server, Azure SQL Database, and Azure SQL Managed Instance -- Syntax Users based on logins in master CREATE USER user_name [ < FOR | FROM >LOGIN login_name ] [ WITH [ . ] ] [ ; ] -- Users that authenticate at the database CREATE USER < windows_principal [ WITH [ . ] ] | user_name WITH PASSWORD = 'password' [ , [ . ] | Microsoft_Entra_principal FROM EXTERNAL PROVIDER > [ ; ] -- Users based on Windows principals that connect through Windows group logins CREATE USER < windows_principal [ < FOR | FROM >LOGIN windows_principal ] | user_name < FOR | FROM >LOGIN windows_principal > [ WITH [ . ] ] [ ; ] -- Users that cannot authenticate CREATE USER user_name < WITHOUT LOGIN [ WITH [ . ] ] | < FOR | FROM >CERTIFICATE cert_name | < FOR | FROM >ASYMMETRIC KEY asym_key_name > [ ; ] ::= DEFAULT_SCHEMA = schema_name | DEFAULT_LANGUAGE = < NONE | lcid | language name | language alias >| SID = sid | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ] ::= DEFAULT_SCHEMA = schema_name ] | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ] -- SQL Database syntax when connected to a federation member CREATE USER user_name [;] -- Syntax for users based on Azure AD logins for Azure SQL Managed Instance CREATE USER user_name [ < FOR | FROM >LOGIN login_name ] | FROM EXTERNAL PROVIDER [ WITH [ . ] ] [ ; ] ::= DEFAULT_SCHEMA = schema_name | DEFAULT_LANGUAGE = < NONE | lcid | language name | language alias >| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
-- Syntax for Azure Synapse Analytics CREATE USER user_name [ < < FOR | FROM > < LOGIN login_name >| WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = schema_name ] [;] CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH DEFAULT_SCHEMA = schema_name ] [;]
-- Syntax for Parallel Data Warehouse CREATE USER user_name [ < < FOR | FROM > < LOGIN login_name >| WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = schema_name ] [;]
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
user_name
Указывает имя, по которому пользователь идентифицируется в этой базе данных. user_name — это sysname. Он может иметь длину до 128 символов. Когда создается пользователь, соответствующий участнику Windows, именем пользователя становится имя участника Windows, если не указано другое имя.
LOGIN login_name
Указывает имя входа, для которого создается пользователь базы данных. login_name должен быть допустимым именем входа на сервере. Может быть именем входа на основе субъекта Windows (пользователя или группы), имени входа с помощью проверки подлинности SQL Server или имени входа с помощью субъекта Microsoft Entra (пользователя, группы или приложения). Когда это имя входа SQL Server входит в базу данных, оно получает имя и идентификатор создаваемого пользователя базы данных. При создании имени для входа, сопоставленного с субъектом Windows, используйте формат[ \ ]. Примеры см. в разделе Сводка синтаксиса.
Если CREATE USER является единственной инструкцией в пакете SQL, предложение WITH LOGIN поддерживается в Базе данных SQL Azure. Если инструкция CREATE USER не единственная в пакете SQL или выполняется в динамическом коде SQL, предложение WITH LOGIN не поддерживается.
WITH DEFAULT_SCHEMA = schema_name
Указывает первую схему, которую найдет сервер, после того, как он получит имена объектов для пользователя данной базы данных.
‘windows_principal‘
Указывает участника Windows, для которого создается пользователь базы данных. windows_principal может быть пользователем Windows или группой Windows. Пользователь будет создаваться даже в случае, если для windows_principal отсутствуют учетные данные. Если при подключении к SQL Server для windows_principal отсутствует имя для входа, то субъект Windows должен пройти проверку подлинности в ядре СУБД за счет членства в группе Windows, содержащей имя для входа, либо в строке подключения в качестве исходного каталога должна указываться автономная база данных. При создании пользователя из субъекта Windows используйте формат [ \ ]. Примеры см. в разделе Сводка синтаксиса. Имена пользователей, основанные на пользователях Active Directory, могут иметь не более 21 символа в длину.
«Microsoft_Entra_principal«
Применимо к: База данных SQL, Управляемый экземпляр SQL, Azure Synapse Analytics.
Указывает субъект Microsoft Entra, для которого создается пользователь базы данных. Microsoft_Entra_principal может быть пользователем Microsoft Entra, группой Microsoft Entra или приложением Microsoft Entra. (Пользователи Microsoft Entra не могут иметь имена входа проверки подлинности Windows в База данных SQL; только пользователи базы данных.) Строка подключения должен указать содержащуюся базу данных в качестве начального каталога.
Для субъектов Microsoft Entra требуется синтаксис CREATE USER:
- UserPrincipalName объекта Microsoft Entra для Microsoft Entra Users.
- CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
- CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
- CREATE USER [Nurses] FROM EXTERNAL PROVIDER;
Дополнительные сведения см. в разделе Подключение База данных SQL с помощью проверки подлинности Microsoft Entra.
WITH PASSWORD = ‘password‘
Область применения: SQL Server 2012 (11.x) и более поздних версий База данных SQL.
Может использоваться только в автономной базе данных. Задает пароль для создаваемого пользователя. Начиная с SQL Server 2012 (11.x), сохраненные сведения о пароле вычисляются с помощью SHA-512 «соленого» пароля.
WITHOUT LOGIN
Указывает, что пользователь не должен сопоставляться с существующими учетными данными.
CERTIFICATE cert_name
Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL.
Указывает сертификат, для которого создается пользователь базы данных.
ASYMMETRIC KEY asym_key_name
Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL.
Указывает асимметричный ключ, для которого создается пользователь базы данных.
DEFAULT_LANGUAGE = < NONE | | | >
Область применения: SQL Server 2012 (11.x) и более поздних версий База данных SQL.
Задает язык по умолчанию для нового пользователя. Если для пользователя задается язык по умолчанию, а затем язык базы данных по умолчанию изменяется, то язык по умолчанию для пользователя сохраняет указанное значение. Если язык по умолчанию не указывается, то языком по умолчанию для пользователя становится язык по умолчанию для базы данных. Если язык по умолчанию для пользователя не указывается, а язык по умолчанию для базы данных через некоторое время изменяется, то язык по умолчанию для пользователя меняется на новый язык по умолчанию для базы данных.
Аргумент DEFAULT_LANGUAGE используется только для пользователя автономной базы данных.
SID = sid
Область применения: SQL Server 2012 (11.x) и более поздних версий.
Применяется только к пользователям с паролями (проверка подлинности SQL Server) в автономной базе данных. Указывает идентификатор SID нового пользователя базы данных. Если этот параметр не выбран, SQL Server назначает идентификатор SID автоматически. Используйте параметр идентификатора SID для создания пользователей в нескольких базах данных с одинаковыми идентификаторами SID. Это удобно при создании пользователей в нескольких базах данных для подготовки обработки отказа AlwaysOn. Чтобы определить идентификатор SID пользователя, выполните запрос sys.database_principals.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL.
Отключает проверки шифрованных метаданных на сервере в операциях массового копирования. Это позволяет пользователю массово копировать зашифрованные данные между таблицами или базами данных без расшифровки данных. Значение по умолчанию — OFF.
Неправильное использование этого параметра может привести к повреждению данных. Дополнительные сведения см. в разделе Перенос конфиденциальных данных с помощью функции Always Encrypted.
FROM EXTERNAL PROVIDER
Применимо к: База данных SQL и Управляемый экземпляр SQL Azure.
Указывает, что пользователь предназначен для проверки подлинности Microsoft Entra.
Замечания
Если FOR LOGIN опущено, новый пользователь базы данных будет сопоставлен с именем входа SQL Server с тем же именем.
Схемой по умолчанию будет первая схема, которую найдет сервер, после того как получит имена объектов для данного пользователя базы данных. Если не указано иное, схемой по умолчанию будет владелец объектов, создаваемых этим пользователем базы данных.
Если пользователь имеет схему по умолчанию, будет использоваться эта схема. Если у пользователя нет схемы по умолчанию, но он является членом группы, которая имеет схему по умолчанию, используется схема по умолчанию группы. Если пользователь не имеет схемы по умолчанию и является членом нескольких групп, схемой по умолчанию для этого пользователя будет схема по умолчанию группы Windows с минимальным значением principal_id и явно заданной схемой по умолчанию. (Невозможно явно выбрать одну из доступных схем по умолчанию как предпочтительную.) Если для пользователя нельзя определить схему по умолчанию, будет использоваться схема dbo.
Значение DEFAULT_SCHEMA может быть установлено до создания схемы, на которую оно указывает.
DEFAULT_SCHEMA нельзя указать при создании пользователя, сопоставленного с сертификатом, или асимметричного ключа.
Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом предопределенной роли сервера sysadmin. Для всех членов предопределенной роли сервера sysadmin по умолчанию установлена схема dbo .
Предложение WITHOUT LOGIN создает пользователя, который не сопоставляется с учетными данными SQL Server. Такой пользователь может подключиться к базе данных как guest. Этому пользователю без имени входа можно назначать разрешения, и когда контекст безопасности меняется на пользователя без имени входа, то исходные пользователи получают его разрешения. См. пример Г. Создание и использование пользователя без имени входа.
Символ обратной косой черты (\) может содержаться только в именах пользователей, сопоставленных с субъектами Windows.
CREATE USER нельзя использовать для создания гостевого пользователя, так как гостевой пользователь уже существует внутри каждой базы данных. Активировать пользователя guest можно, предоставив ему разрешение CONNECT, как показано далее:
GRANT CONNECT TO guest; GOДанные о пользователях базы данных отображаются в представлении каталога sys.database_principals.
Используйте расширение FROM EXTERNAL PROVIDER синтаксиса для создания имен входа Microsoft Entra на уровне сервера в База данных SQL Azure и Управляемый экземпляр SQL Azure. Имена входа Microsoft Entra позволяют субъектам Microsoft Entra уровня базы данных сопоставляться с именами входа Microsoft Entra на уровне сервера. Чтобы создать пользователя Microsoft Entra из имени входа Microsoft Entra, используйте следующий синтаксис:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login]
При создании пользователя в базе данных SQL Azure login_name должен соответствовать существующему имени входа Microsoft Entra или в противном случае с помощью предложения FROM EXTERNAL PROVIDER пользователь Microsoft Entra будет создавать только пользователя Microsoft Entra без входа в базу данных master. Например, следующая команда создает автономного пользователя:
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
Сводка синтаксиса
Пользователи, соответствующие именам входа в базе данных master
В следующем списке показан возможный синтаксис для пользователей, связанных с именами входа. Параметры схемы по умолчанию не приведены в списке.
- CREATE USER [Domain1\WindowsUserBarry]
- CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
- CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
- CREATE USER [Domain1\WindowsGroupManagers]
- CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
- CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
- CREATE USER SQLAUTHLOGIN
- CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
- CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN
Пользователи, проходящие проверку подлинности в базе данных
В следующем списке показан возможный синтаксис для пользователей, которые могут использоваться только в автономной базе данных. Созданные пользователи не будут связаны с учетными данными в базе данных master. Параметры схемы и языковые параметры, задаваемые по умолчанию, не приведены в списке.
Этот синтаксис предоставляет пользователям доступ к базе данных, а также предоставляет новый доступ к ядро СУБД.
- CREATE USER [Domain1\WindowsUserBarry]
- CREATE USER [Domain1\WindowsGroupManagers]
- CREATE USER Barry WITH PASSWORD = ‘sdjklalie8rew8337!$d’
Пользователи на основе субъектов Windows без подключения к базе данных master
В следующем списке указан возможный синтаксис для пользователей, имеющих доступ к ядру СУБД за счет членства в группе Windows, но не имеющих имени для входа в базе данных master. Такой синтаксис можно использовать во всех типах базы данных. Параметры схемы и языковые параметры, задаваемые по умолчанию, не приведены в списке.
Этот синтаксис аналогичен синтаксису, который применяется к пользователям, соответстующим учетным данным в базе данных master. Однако пользователи этой категории не имеют учетных данных в базе данных master. Пользователь должен иметь доступ к ядро СУБД через имя входа в группу Windows.
Этот синтаксис аналогичен тому который используется для пользователей автономной базы данных, соответствующих субъектам Windows, однако пользователи этой категории не получают новый доступ к ядру СУБД.
- CREATE USER [Domain1\WindowsUserBarry]
- CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
- CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
- CREATE USER [Domain1\WindowsGroupManagers]
- CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
- CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
Пользователи, которые не могут проходить проверку подлинности
В следующем списке показан возможный синтаксис для пользователей, которые не могут войти в SQL Server.
- CREATE USER RIGHTSHOLDER WITHOUT LOGIN
- CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
- CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
- CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
- CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey
Безопасность
При создании пользователя предоставляется доступ к базе данных, но доступ к объектам в базе данных не предоставляется автоматически. После создания пользователи обычно добавляются в роли базы данных, которые имеют разрешение на доступ к объектам базы данных, либо разрешения на объект предоставляются непосредственно пользователю. Сведения о проектировании системы разрешений см. в статье Getting Started with Database Engine Permissions.
Замечания, относящиеся к автономным базам данных
Если при подключении к автономной базе данных пользователь не имеет учетных данных в базе данных master, то строка подключения должна содержать имя автономной базы данных в качестве исходного каталога. Параметр исходного каталога всегда обязателен для пользователя автономной базы данных с паролем.
В автономной базе данных создание пользователей помогает отделять базу данных от экземпляра ядро СУБД, чтобы базу данных можно было легко переместить в другой экземпляр SQL Server. Дополнительные сведения см. в разделах Автономные базы данных и Пользователи автономной базы данных — создание переносимой базы данных. Сведения об изменении пользователя базы данных с пользователя, имеющего имя для входа для проверки подлинности SQL Server, на пользователя автономной базы данных с паролем, см. в разделе sp_migrate_user_to_contained (Transact-SQL).
В автономной базе данных не требуется, чтобы у пользователей были учетные данные в базе данных master. ядро СУБД администраторы должны понимать, что доступ к автономной базе данных можно предоставить на уровне базы данных вместо уровня ядро СУБД. Дополнительные сведения см. в разделе Security Best Practices with Contained Databases.
При использовании пользователей автономной базы данных на База данных SQL Azure настройте доступ с помощью правила брандмауэра уровня базы данных вместо правила брандмауэра на уровне сервера. Дополнительные сведения см. в разделе sp_set_database_firewall_rule (база данных SQL Azure).
Для SQL Server 2022 (16.x), База данных SQL, Управляемый экземпляр SQL Azure и Azure Synapse Analytics содержатся пользователи базы данных, SSMS поддерживает многофакторную проверку подлинности. Дополнительные сведения см. в разделе «Использование многофакторной проверки подлинности Microsoft Entra».
Разрешения
Необходимо разрешение ALTER ANY USER для базы данных.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение CREATE USER в базе данных.
Примеры
А. Создание пользователя базы данных, соответствующего имени входа SQL Server
В следующем примере сначала создается имя AbolrousHazem входа SQL Server, а затем создается соответствующий пользователь AbolrousHazem AdventureWorks2022 базы данных.
CREATE LOGIN AbolrousHazem WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';Изменение на пользовательскую базу данных. Например, в SQL Server используйте инструкцию USE AdventureWorks2022 . В Azure Synapse Analytics и analytics Platform System (PDW) необходимо создать новое подключение к пользовательской базе данных.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem; GOB. Создание пользователя базы данных со схемой по умолчанию
В следующем примере вначале создается имя входа WanidaBenshoof с паролем на сервер, а затем в базе данных создается соответствующий пользователь Wanida со схемой по умолчанию Marketing .
CREATE LOGIN WanidaBenshoof WITH PASSWORD = '8fdKJl3$nlNv3049jsKK'; USE AdventureWorks2022; CREATE USER Wanida FOR LOGIN WanidaBenshoof WITH DEFAULT_SCHEMA = Marketing; GOC. Создание пользователя базы данных из сертификата
В следующем примере в базе данных создается пользователь JinghaoLiu из сертификата CarnationProduction50 .
Применимо: SQL Server 2008 (10.0.x) и более поздних версий.
USE AdventureWorks2022; CREATE CERTIFICATE CarnationProduction50 WITH SUBJECT = 'Carnation Production Facility Supervisors', EXPIRY_DATE = '11/11/2011'; GO CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50; GOD. Создание и использование пользователя без имени входа
В следующем примере создается пользователь базы данных CustomApp , который не сопоставляется с именем для входа на SQL Server. Затем пример предоставляет пользователю adventure-works\tengiz0 разрешение на олицетворение CustomApp пользователя.
USE AdventureWorks2022; CREATE USER CustomApp WITHOUT LOGIN ; GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ; GOДля использования учетных данных CustomApp , пользователь adventure-works\tengiz0 выполняет следующее выражение.
EXECUTE AS USER = 'CustomApp' ; GOДля возврата к учетным данным adventure-works\tengiz0 , пользователь выполняет следующее выражение.
REVERT ; GOД. Создание пользователя автономной базы данных с паролем
В следующем примере создается пользователь автономной базы данных с паролем. Этот пример можно выполнить только в автономной базе данных.
Область применения: SQL Server 2012 (11.x) и более поздних версий. Этот пример работает в База данных SQL, если DEFAULT_LANGUAGE удалены.
USE AdventureWorks2022; GO CREATE USER Carlo WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*' , DEFAULT_LANGUAGE=[Brazilian] , DEFAULT_SCHEMA=[dbo] GOF. Создание пользователя автономной базы данных для имени входа домена
В следующем примере создается пользователь автономной базы данных для имени входа Fritz в домене Contoso. Этот пример можно выполнить только в автономной базе данных.
Область применения: SQL Server 2012 (11.x) и более поздних версий.
USE AdventureWorks2022; GO CREATE USER [Contoso\Fritz] ; GOG. Создание пользователя автономной базы данных с конкретным идентификатором SID
В следующем примере создается пользователь автономной базы данных с проверкой подлинности SQL Server, имя пользователя — CarmenW. Этот пример можно выполнить только в автономной базе данных.
Область применения: SQL Server 2012 (11.x) и более поздних версий.
USE AdventureWorks2022; GO CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+' , SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;H. Создание пользователя для копирования зашифрованных данных
В следующем примере создается пользователь, который может копировать данные, защищенные компонентом Always Encrypted, из одного набора таблиц с зашифрованными столбцами, в другой набор таблиц с зашифрованными столбцами (в той же или другой базе данных). Дополнительные сведения см. в разделе Перенос конфиденциальных данных с помощью функции Always Encrypted.
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL.
CREATE USER [Chin] WITH DEFAULT_SCHEMA = dbo , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;I. Создание пользователя Microsoft Entra из имени входа Microsoft Entra в SQL Azure
Чтобы создать пользователя Microsoft Entra из имени входа Microsoft Entra, используйте следующий синтаксис.
Войдите на логический сервер в Azure или Управляемый экземпляр SQL с помощью имени входа Microsoft Entra, предоставив sysadmin роль в Управляемый экземпляр SQL или loginmanager роли в База данных SQL. В следующем примере создается пользователь bob@contoso.com Microsoft Entra из имени входа bob@contoso.com . Это имя входа было создано в примере CREATE LOGIN.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]; GOПри создании пользователя из имени входа Microsoft Entra укажите user_name так же, как и login_name из login.
Создание пользователя Microsoft Entra в качестве группы из имени входа Microsoft Entra, которое является группой, поддерживается.
CREATE USER [MS Entra group] FROM LOGIN [MS Entra group]; GOВы также можете создать пользователя Microsoft Entra из имени входа Microsoft Entra, который является группой.
CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group]; GOJ. Создание пользователя автономной базы данных из субъекта Microsoft Entra
Следующий синтаксис создает пользователя bob@contoso.com Microsoft Entra в базе данных без связанного входа в master :
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER; GOСледующие шаги
После создания пользователя вы можете добавить пользователя к роли базы данных с помощью инструкции ALTER ROLE.
Используйте GRANT для предоставления роли разрешений на объект, чтобы она имела доступ к таблицам. Общие сведения о модели безопасности SQL Server см. в разделе Разрешения.