Как создать пользователя sql
Перейти к содержимому

Как создать пользователя sql

  • автор:

CREATE USER (Transact-SQL)

Добавляет нового пользователя в текущую базу данных. Ниже перечислены 13 типов пользователей с примером базового синтаксиса.

Пользователи с именем входа в базе данных master. Это самый распространенный тип пользователей.

  • Пользователь с именем входа, задаваемым по учетной записи Windows Active Directory. CREATE USER [Contoso\Fritz];
  • Пользователь с именем входа, задаваемым по группе Windows. CREATE USER [Contoso\Sales];
  • Пользователь на основе имени входа с помощью проверки подлинности SQL Server. CREATE USER Mary;
  • Пользователь с учетными данными Azure AD. CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]

Заметка Субъекты сервера (учетные данные) Azure Active Directory (Azure AD) сейчас поддерживаются в общедоступной предварительной версии для Базы данных SQL Azure.

Пользователи, проходящие проверку подлинности в базе данных. Рекомендуется для повышения переносимости базы данных.
Всегда разрешено в базе данных SQL. Разрешено только в автономной базе данных в SQL Server.

  • Пользователь, соответствующий пользователю Windows без имени входа. CREATE USER [Contoso\Fritz];
  • Пользователь, соответствующий группе Windows без имени входа. CREATE USER [Contoso\Sales];
  • Пользователь в базе данных SQL или Azure Synapse Analytics на основе пользователя Azure Active Directory. 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' [ , [ . ] | Azure_Active_Directory_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 ] ] 

Изменились функции, доступные администратору Azure AD для Управляемого экземпляра SQL Azure после создания. Дополнительные сведения см. в разделе Новые функции администратора Azure AD для MI.

-- Syntax for Azure Synapse Analytics CREATE USER user_name [ < < FOR | FROM > < LOGIN login_name >| WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = schema_name ] [;] CREATE USER Azure_Active_Directory_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 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

user_name

Указывает имя, по которому пользователь идентифицируется в этой базе данных. user_name — это sysname. Он может иметь длину до 128 символов. Когда создается пользователь, соответствующий участнику Windows, именем пользователя становится имя участника Windows, если не указано другое имя.

LOGIN login_name

Указывает имя входа, для которого создается пользователь базы данных. login_name должен быть допустимым именем входа на сервере. Может представлять собой имя для входа, соответствующее субъекту Windows (пользователю или группе), имя для входа с использованием проверки подлинности SQL Server или имя для входа с использованием субъекта Azure AD (пользователь, группа или приложение). Когда это имя входа 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 символа в длину.

Azure_Active_Directory_principal

Область применения: База данных SQL, Управляемый экземпляр SQL, Azure Synapse Analytics.

Указывает субъект Azure Active Directory, для которого создается пользователь базы данных. Azure_Active_Directory_principal может быть пользователем Azure Active Directory, группой Azure Active Directory или приложением Azure Active Directory. (Пользователи Azure Active Directory не могут иметь имена входа проверки подлинности Windows в базе данных SQL; только пользователи базы данных.) Строка подключения должна указать содержащуюся базу данных в качестве начального каталога.

Для субъектов Azure AD действуют такие требования синтаксиса CREATE USER:

  • имя участника-пользователя (UserPrincipalName) объекта Azure AD для пользователей Azure AD;
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;
    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 и управляемый экземпляр.
    Указывает, что имя пользователя предназначено для проверки подлинности Azure AD.

    Замечания

    Если параметр 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.

    Для создания учетных данных Azure AD на уровне сервера в Базе данных SQL Azure и Управляемом экземпляре SQL Azure доступно новое расширение синтаксиса FROM EXTERNAL PROVIDER. Имена входа Azure AD позволяют сопоставлять субъекты Azure AD на уровне базы данных с именами входа Azure AD на уровне сервера. Чтобы создать пользователя Azure AD по имени входа Azure AD, используйте следующий синтаксис:

    CREATE USER [AAD_principal] FROM LOGIN [Azure AD login]

    При создании пользователя в базе данных SQL Azure значение login_name должно соответствовать имеющимся учетным данным Azure AD. В противном случае в результате использования предложения FROM EXTERNAL PROVIDER будет создан только пользователь Azure AD без учетных данных в базе данных 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 поддерживает многофакторную проверку подлинности. Дополнительные сведения см. в статье Об использовании Многофакторной идентификации Azure AD.

    Разрешения

    Необходимо разрешение ALTER ANY 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; GO 

    B. Создание пользователя базы данных со схемой по умолчанию

    В следующем примере вначале создается имя входа WanidaBenshoof с паролем на сервер, а затем в базе данных создается соответствующий пользователь Wanida со схемой по умолчанию Marketing .

    CREATE LOGIN WanidaBenshoof WITH PASSWORD = '8fdKJl3$nlNv3049jsKK'; USE AdventureWorks2022; CREATE USER Wanida FOR LOGIN WanidaBenshoof WITH DEFAULT_SCHEMA = Marketing; GO 

    C. Создание пользователя базы данных из сертификата

    В следующем примере в базе данных создается пользователь 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; GO 

    D. Создание и использование пользователя без имени входа

    В следующем примере создается пользователь базы данных 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] GO 

    Е. Создание пользователя автономной базы данных для имени входа домена

    В следующем примере создается пользователь автономной базы данных для имени входа Fritz в домене Contoso. Этот пример можно выполнить только в автономной базе данных.

    Область применения: SQL Server 2012 (11.x) и более поздних версий.

    USE AdventureWorks2022; GO CREATE USER [Contoso\Fritz] ; GO 

    G. Создание пользователя автономной базы данных с конкретным идентификатором 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. Создание пользователя Azure AD на основе учетных данных Azure AD в Azure SQL

    Чтобы создать пользователя Azure AD по имени входа Azure AD, используйте приведенный ниже синтаксис.

    Войдите в логический сервер SQL Azure или управляемый экземпляр SQL с sysadmin помощью имени входа Azure AD, предоставленного ролью в управляемом экземпляре или loginmanager роли в базе данных SQL. Приведенная ниже инструкция создает пользователя Azure AD bob@contoso.com по имени входа bob@contoso.com . Это имя входа было создано в примере CREATE LOGIN.

    CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]; GO 

    При создании пользователя по имени входа Azure AD указываемое значение user_name должно совпадать со значением login_nameимени входа.

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

    CREATE USER [AAD group] FROM LOGIN [AAD group]; GO 

    Вы можете создать пользователя Azure AD по имени входа Azure AD, являющемуся группой.

    CREATE USER [bob@contoso.com] FROM LOGIN [AAD group]; GO 

    J. Создание пользователя Azure AD без учетных данных Azure AD для базы данных

    Чтобы создать пользователя Azure AD bob@contoso.com (автономного) в базе данных Управляемого экземпляра SQL, используйте следующий синтаксис:

    CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER; GO 

    Далее

    После создания пользователя вы можете добавить пользователя к роли базы данных с помощью инструкции ALTER ROLE.
    Используйте GRANT для предоставления роли разрешений на объект, чтобы она имела доступ к таблицам. Общие сведения о модели безопасности SQL Server см. в разделе Разрешения.

    15) SQL Server Создать пользователя

    Вы также можете создать логин с помощью команды T-SQL.

    CREATE LOGIN MyLogin WITH PASSWORD = '123';

    Как создать пользователя

    Пользователь – это учетная запись, которую вы можете использовать для доступа к серверу SQL. Для создания пользователей вы можете использовать любой из следующих двух способов:

    • Использование T-SQL
    • Использование SQL Server Management Studio

    Создать пользователя с помощью SQL Server Management Studio

    Вы будете создавать пользователя для базы данных EDU_TSQL.

    1. Подключитесь к SQL Server, затем разверните папку «Базы данных» в обозревателе объектов.
    2. Определите базу данных, для которой вам нужно создать пользователя, и разверните ее.
    3. Разверните его папку «Безопасность».
    4. Щелкните правой кнопкой мыши папку «Пользователи» и выберите «Новый пользователь…»

    Вы получите следующий экран,

    1. Введите желаемое имя пользователя
    2. Введите имя для входа (создано ранее)
    3. Нажмите ОК

    Создать пользователя с помощью T-SQL

    Вы можете создать нового пользователя USER с помощью команды create user в T-SQL. Команда имеет следующий синтаксис:

    create user for login

    create user Guru99 for login MyLogin

    Примечание. Запрос должен быть выполнен в окне запроса. Если пользователь уже создан для входа в систему, SQL Server выдаст ошибку, если вы создадите пользователя для того же имени входа.

    Назначение разрешения пользователю

    Разрешения относятся к правилам, которые управляют уровнями доступа пользователей к защищенным ресурсам SQL Server. SQL Server позволяет вам предоставлять, отзывать и запрещать такие разрешения. Существует два способа назначения разрешений в SQL Server:

    • Использование T-SQL
    • Использование SQL Server Management Studio

    Назначьте разрешение с помощью SQL Server Management Studio

    Шаг 1) Подключитесь к своему экземпляру SQL Server и разверните папки из обозревателя объектов, как показано ниже. Щелкните правой кнопкой мыши на имени пользователя, то есть Guru99, затем выберите Свойства.

    Шаг 2) На следующем экране

    1. Выберите опцию Securables слева.
    2. Нажмите на Поиск

    Шаг 3) В следующем окне

    1. Выберите «Все объекты, принадлежащие схеме».
    2. Выберите имя схемы как “dbo”
    3. Нажмите ОК

    Шаг 4)

    1. Определите таблицу, которую вы хотите предоставить разрешение
    2. В явном разрешении выберите Грант
    3. Нажмите хорошо

    Шаг 5) Пользователю Guru99 предоставляется разрешение SELECT на таблицу Course.

    Предоставить разрешение с использованием T-SQL

    Чтобы предоставить разрешение пользователю, использующему T-SQL, сначала выберите базу данных, используя оператор использования. Затем вы назначаете разрешение пользователю с помощью оператора предоставления. Вот синтаксис:

    use grant on to

    Например, следующая команда показывает, как вы можете предоставить разрешение на выбор пользователю Guru99 для объекта (таблицы) с именем Course в базе данных EDU_TSQL:

    USE EDU_TSQL GO Grant select on Course to Guru99

    Разрешение будет предоставлено!

    Создание нового пользователя и настройка прав в MySQL

    Как работать с пользователями в MySQL: создавать и удалять учетные записи, предоставлять и отзывать привилегии, а также просматривать права доступа.

    Эта инструкция — часть курса «MySQL для новичков».

    Смотреть весь курс

    Введение

    В статье речь пойдет о работе с пользователями открытой реляционной системы управления базами данных (СУБД) MySQL, появившейся в 1994 году. В 2008 году Sun Microsystems купил MySQL AB, а в 2010 уже Sun была поглощена Oracle. Эти продажи побудили авторов исходной СУБД создать форк — MariaDB, свободный от лицензионных ограничений текущего владельца и совместимый с Oracle MySQL. Помимо «Марии» известен другой форк, Percona, — от Петра Зайцева и Вадима Ткаченко. Оба форка совместимы с MySQL.

    БД от Percona обладает дополнительными функциями, направленными на повышение производительности. Многие дистрибутивы (например, Red Hat) перешли на MariaDB из-за предсказуемой лицензионной политики. В своих проектах автор использует MariaDB.

    Есть несколько способов работы с БД MySQL: через графические phpMyAdmin, MySQL WorkBench и т.д.

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

    Для этого понадобится минимум — консольный клиент mysql. Запускать его можно на своей рабочей станции (mysql —host= [—user=] [—password=] [database]) или через ssh на самом сервере (в случае ОС Linux).

    Зачем нужны пользователи

    После установки MySQL технически мы можем подключаться из нашего ПО от имени root’а, но это не безопасно. Работая с информационными системами, мы всегда должны помнить и соблюдать принцип наименьших привилегий. Для более безопасной работы и создаются пользователи БД. Привилегии должны быть предоставлены пользователю строго только те, что действительно необходимы.

    Администратору MariaDB в работе требуется создавать учетные записи «обычных» пользователей с ограниченным доступом к данным, определять права доступа, при необходимости — создавать дополнительных (привилегированных) суперпользователей. Также важно проводить аудит — просматривать выданные полномочия и корректировать их по мере необходимости.

    Пользователи MySQL

    Имя пользователя MySQL

    В MySQL имя пользователя состоит из 2-х частей: имени пользователя (обязательно) и хоста (может быть опущена, тогда она означает ‘%’):

    ‘someuser’@’somehost’, аналогично, почтовому адресу.

    Поняв это правило, посмотрим, как по умолчанию выглядит суперпользователь. На самом деле полностью учетка записывается трижды: ‘root’@’localhost’, ‘root’@’127.0.0.1’ и ‘root’@’::1’ с одинаковым парольным хешем.

    В хостовой части могут использоваться DNS-имена, IP-адреса и символ подстановки %, обозначающий любой (любые) символы.

    Примеры записи хоста:

    somehost.example.com localhost 127.0.0.1 ::1 192.168.123.% 192.168.123.0/255.255.255.0 %

    Примечание: имена и адреса следует указывать в том формате, в каком возвращает системный DNS resolver сервера.

    Просмотр всех пользователей

    Давайте проверим, какие пользователи есть в нашей БД. Выведем основную информацию о пользователях:

    SELECT host, user, password, password_expired FROM mysql.user;

    Когда список получается большим, мы можем добавить фильтр (в примере — по хостам, начинающимся с msk):

    SELECT host, user, password FROM mysql.user WHERE host LIKE 'msk%';

    Или использовать в конце модификатор \G, оптимизирующий вывод для отображения в консоли:

    SELECT host, user, password FROM mysql.user\G;
    SELECT * FROM mysql.user[\G];

    Создание нового пользователя MySQL

    Новый пользователь в MySQL добавляется командой:

    CREATE USER 'some_user'@'somehost.somedomain' IDENTIFIED BY 'some_password';

    Теперь давайте создадим нашего первого пользователя:

    CREATE USER 'test'@'localhost' IDENTIFIED BY 'secret'; FLUSH PRIVILEGES;

    Полезная возможность — добавление комментария:

    CREATE USER 'test'@'localhost' COMMENT 'My 1st user for app';

    FLUSH PRIVILEGES

    Обратите внимание на эту команду: она дает серверу команду перечитать привилегии. Как следует из документации, команда FLUSH PRIVILEGES в MySQL нужна только в случае прямой модификации таблиц привилегий MySQL операторами типа INSERT, UPDATE или DELETE. Но для простоты запоминания будем указывать ее и для «правильных» операторов таких как GRANT, REVOKE, SET PASSWORD и RENAME USER, как в примере выше и остальных, используемых в статье.

    Удаление пользователя MySQL

    Для удаления пользователя используется команда

    DROP USER 'some_user'@'somehost.somedomain';

    На нашем предыдущем примере:

    DROP USER 'test'@'localhost'; FLUSH PRIVILEGES;

    Создание дополнительного суперпользователя

    Это не лучшая практика, но бывают ситуации, когда у СУБД несколько хозяев и всем нужно быть суперпользователями. В MySQL добавить пользователя с root-правами можно так:

    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

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

    Отзыв полномочий у пользователя

    Команда отзыва привилегий функционально обратна GRANT, “TO” заменяется на “FROM”:

    REVOKE SELECT ON `somedb`.* FROM 'someuser'@'somehost'; REVOKE ALL PRIVILEGES ON `somedb`.* FROM 'someuser'@'somehost'; REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'someuser'@'somehost';

    Смена пароля

    Для изменения пароля учетной записи пользователя применяется команда ALTER USER:

    ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'new_password';

    Предоставление доступа пользователю MySQL

    Доступ предоставляется командой:

    GRANT SELECT ON `some_db`.* TO 'some_user'@'somehost.somedomain'; FLUSH PRIVILEGES;

    Допустим, наше ПО использует базу данных test_db. Для его работы мы создали пользователя test_user, а FQDN хоста, где работает ПО — наш локальный хост (localhost). Наше приложение только считывает данные из БД — выполняет SELECT.

    Создадим пользователя и БД (часто БД называют схемой, в терминах MySQL):

    CREATE SCHEMA test_DB; CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'secret';

    Команда для предоставления доступа будет выглядеть так:

    GRANT SELECT ON `test_db`.* TO 'test_user'@'localhost'; FLUSH PRIVILEGES;

    Наследование привилегий

    В предыдущем примере наш пользователь сможет только читать данные из базы test_db, но передать свои права другому пользователю не сможет. Используя GRANT OPTION, мы можем позволить ему сделать это. Тогда пользователь получит возможность передавать другим то, что разрешено ему самому.

    GRANT SELECT, INSERT, UPDATE, DELETE ON `some_db`.* TO 'some_user'@'somehost' WITH GRANT OPTION;

    В этом примере some_user может поделиться правами на SELECT, INSERT, UPDATE, DELETE для базы some_db.

    Из соображений безопасности использовать GRANT OPTION небезопасно! В случае компрометации учетной записи злоумышленник сможет не только получить доступ к данным, но и сделать закладку в виде копии учетной записи.

    Доступ к таблице

    Примеры выше дают доступ ко всей БД. Часто доступ должен быть ограничен строго определенным набором таблиц:

    GRANT SELECT ON `test_db`.`table_users` TO 'test_user'@'localhost';

    Выполнение команды приведет к ошибке, т.к. этой таблицы еще нет.

    CREATE TABLE `test_db`.`table_users` (id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(16) NOT NULL, password VARCHAR(32));

    и повторим предоставление доступа:

    GRANT SELECT ON `test_db`.`table_users` TO 'test_user'@'localhost';

    Доступ к столбцу

    Предоставляется перечислением столбцов:

    GRANT SELECT (id, user_name), UPDATE (user_name) ON `test_db`.`table_users` TO 'test_user'@'localhost';

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

    Просмотр привилегий пользователей MySQL

    Часто возникает задача выяснить полномочия учетной записи или определить, кому дан доступ к базе или таблице. Остановимся на этом подробнее.

    Проверка текущих полномочий пользователя

    Нам пригодится команда:

    SHOW GRANTS FOR 'someuser'@'somehost.somedomain';
    SHOW GRANTS FOR 'appuser'@'srv14.example.com'; +--------------------------------------------------------------------------------------------------------------------------------+ | Grants for appuser@srv14.example.com | +--------------------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'appuser'@'srv14.example.com' IDENTIFIED BY PASSWORD '*F4E0A7F0B10264F70558CF07A4ABD4E041182D6E' | | GRANT SELECT ON `net_database`.* TO 'appuser'@'srv14.example.com' | +--------------------------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)

    Проверка полномочий к данным

    Через read-only БД information_schema доступно множество метаданных — системной информации. Информация о доступе на БД (схемы), таблицы и столбцы доступны в таблицах schema_privileges, table_privileges и column_privileges. Работа с ними — обычные SQL-запросы:

    SELECT * FROM information_schema.schema_privileges; SELECT * FROM information_schema.table_privileges; SELECT * FROM information_schema.column_privileges; SELECT * FROM information_schema.column_privileges WHERE GRANTEE="'test_user'@'localhost'";
    MariaDB [information_schema]> select * from information_schema.column_privileges WHERE GRANTEE="'test_user'@'localhost'"; +-------------------------+---------------+--------------+------------+-------------+----------------+--------------+ | GRANTEE | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | PRIVILEGE_TYPE | IS_GRANTABLE | +-------------------------+---------------+--------------+------------+-------------+----------------+--------------+ | 'test_user'@'localhost' | def | test_db | table_usr | id | INSERT | NO | | 'test_user'@'localhost' | def | test_db | table_usr | user_name | UPDATE | NO | +-------------------------+---------------+--------------+------------+-------------+----------------+--------------+ 2 rows in set (0.001 sec)

    Просмотр привилегий через системную БД mysql

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

    Информация о пользователях:

    SELECT * FROM mysql.user;

    Привилегии на базы данных:

    SELECT * FROM mysql.db;

    Права, назначенные на таблицы:

    SELECT * FROM mysql.tables_priv;
     SELECT * FROM mysql.columns_priv;

    Просмотр глобальных привилегий

    Глобальные полномочия смотрим здесь:

    SELECT * FROM information_schema.user_privileges;

    Заключение

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

    При выдаче прав избегайте избыточности. Права не нужно выдавать с запасом, часто выполнение GRANT ALL PRIVILEGES ON *.* TO ‘myUser’@’%’ — не лучший выход. Другой важный момент, часто упускаемый из виду новичками, — наличие в имени хостовой части. Игнорирование хоста может привести к ошибкам.

    Всем высоких скоростей, безаварийной работы и долгого аптайма!

    Как создавать таблицы в MySQL (Create Table)

    Добавление учетных записей и пользователей в SQL Server

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

    • Создать или добавить учетную запись к экземпляру SQL Server.
    • Создать пользователя, соответствующего указанной учетной записи.
    • Создать схему сопоставления для пользователя в указанной базе данных.
    • Предоставить пользователю права доступа, необходимые для создания таблиц, классов объектов или представлений в указанной базе данных.

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

    Вы можете запустить инструмент Создать пользователя базы данных из ArcGIS Desktop или вызвать инструмент в скрипте Python для создания пользователя базы данных, который может создавать таблицы, классы объектов и представления.

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

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

    Использование инструмента Создать пользователя базы данных

    1. Запустите клиент ArcGIS Desktop .
    2. Подключитесь к базе данных или базе геоданных, используя учетную запись с правами системного администратора в экземпляре SQL Server.
    3. Откройте инструмент Создать пользователя базы данных . Инструмент находится в группе инструментов Администрирование базы геоданных набора Управление данными.
    4. Укажите подключение к базе данных в поле Входное подключение к базе данных .
    5. Выберите, будете ли вы создавать учетную запись с аутентификацией SQL Server или использовать существующую учетную запись с аутентификацией Windows.
      • Оставьте Создать пользователя с аутентификацией средствами операционной системы не отмеченным, чтобы создать пользователя с аутентификацией средствами SQL Server. Обратите внимание, что по умолчанию экземпляры SQL Server используют только аутентификацию Windows. Если ваш экземпляр не настроен для использования аутентификации SQL Server или Windows, вы не сможете создать пользователя с аутентификацией средствами базы данных.
      • Отметьте Создать пользователя с аутентификацией средствами операционной системы , чтобы использовать существующую учетную запись с аутентификацией средствами Windows.
    6. Введите имя пользователя базы данных, который будет создан инструментом. Если вы выберите создание учетной записи с аутентификацией SQL Server, имя, которое вы введете, также будет использовано для учетной записи.
    7. Введите пароль пользователя базы данных.
    8. Если у вас уже определена роль, к которой вы хотите добавить пользователя, укажите ее.
    9. Щелкните OK (ArcMap) или Запустить (ArcGIS Pro).

    Запустите скрипт Python

    Чтобы создать пользователя с помощью скрипта, выполните следующие шаги:

      Создайте текстовый файл на клиентском компьютере ArcGIS и скопируйте следующий скрипт в файл.

    """ Name: create_database_user.py Description: Provide connection information to a database user. Type create_database_user.py -h or create_database_user.py --help for usage """ # Import system modules import arcpy import os import optparse import sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for 10.1 release") #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user") parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password") parser.add_option ("--utype", dest="user_type", type ="choice", choices=['DATABASE_USER', 'OPERATING_SYSTEM_USER'], default='DATABASE_USER', help="Authentication type options (case-sensitive): DATABASE_USER, OPERATING_SYSTEM_USER. Default=DATABASE_USER") parser.add_option ("-u", dest="dbuser", type="string", default="", help="database user name") parser.add_option ("-p", dest="dbuser_pwd", type="string", default="", help="database user password") parser.add_option ("-r", dest="role", type="string", default="", help="role to be granted to the user") parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print "%s: error: %s\n" % (sys.argv[0], "No command options given") parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance database = options.Database.lower() account_authentication = options.Account_authentication.upper() dbms_admin = options.Dbms_admin dbms_admin_pwd = options.Dbms_admin_pwd dbuser = options.dbuser dbuser_pwd = options.dbuser_pwd tablespace = options.Tablespace user_type = options.user_type role = options.role if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" if( database_type ==""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")) parser.print_help() sys.exit(3) if(database_type == "SQL_SERVER"): if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication")) sys.exit(3) if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""): print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication. ")) else: if( dbuser.lower() == ""): print("\n%s: error: %s\n" % (sys.argv[0], "Database user must be specified.")) sys.exit(3) if( dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")) sys.exit(3) if ( user_type == "DATABASE_USER" and (dbuser =="" or dbuser_pwd =="")): print(" \n%s: error: \n%s\n" % (sys.argv[0], "To create database authenticated user, user name and password must be specified!")) parser.print_help() sys.exit(3) # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print("\n" + product_license + " license found!" + " Creating a user in an enterprise geodatabase or database requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license.") sys.exit("Re-authorize ArcGIS before creating a database user.") else: print("\n" + product_license + " license available! Continuing to create. ") arcpy.AddMessage("+++++++++") # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database + "_" + dbms_admin if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = Conn_File_NameT + ".sde" Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) try: print("\nCreating Database Connection File. \n") # Process: Create Database Connection File. # Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true) #arcpy.CreateDatabaseConnection_management(temp , Connection_File_Name, database_type, instance, database, account_authentication, dbms_admin, dbms_admin_pwd, "TRUE") arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=dbms_admin, password=dbms_admin_pwd, save_user_pass="TRUE") for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") print("Creating database user. \n") arcpy.CreateDatabaseUser_management(input_workspace=Connection_File_Name_full_path, user_authentication_type=user_type, user_name=dbuser, user_password=dbuser_pwd, role=role, tablespace_name=tablespace) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print("\n") parser.print_help() parser.exit(2) 

    В следующем примере имя созданного скрипта – create_database_user.py. В экземпляре SQL Server ssi5 создана учетная запись с аутентификацией SQL Server (gisd_owner), а также соответствующая схема и пользователь созданы а в базе данных gisdata. Пользователь не добавлен к роли.

    create_database_user.py --DBMS SQL_SERVER -i ssi5 -D gisdata --auth DATABASE_AUTH -U sa -P !nocopy! --utype DATABASE_USER -u gisd_owner -p T3mpPass 
    Подсказка:

    Введите -h или —help в командной строке для вывода справки синтаксиса.

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

    Есть несколько способов, с помощью которых владелец данных может создавать таблицы в базе данных или геоданных. Сведения о создании таблиц средствами ArcGIS см. в разделе Обзор добавления наборов данных в базу геоданных.

    Так как набор данных существует, их владелец может предоставлять права доступа к данным другим пользователям. Инструкции см. в разделе Предоставление и отзыв прав доступа к наборам данных.

    Создание учетных записей и пользователей с помощью инструментов SQL Server

    Если вы хотите создать пользователя, которые имеет права, отличающиеся от предоставляемых инструментом Создать пользователя базы данных , или не имеет прав, предоставленным непосредственно ему, вы можете воспользоваться для этого инструментами SQL Server. Существует несколько вещей, о которых нужно помнить при создании собственных учетных записей и пользователей, которые будут использоваться с ArcGIS:

    • Все пользователи базы данных, которые будут создавать данные, должны иметь схему базы данных. Эта схема должна иметь то же имя, что и пользователь.
    • Вы можете предоставить группе Windows доступ к SQL Server, вместо использования отдельных учетных записей Windows, что упростит создание и управление учетными записями. Все участники группы Windows могут подключаться к SQL Server. Права доступа к серверу, базе данных или набору данных предоставленные группе, автоматически применяется к каждому участнику группы. Тем не менее, вы не можете создать одну схему для хранения данных, созданных всеми участниками группы. Каждый пользователь в группе, который создает данные в базе геоданных, должен иметь собственную схему, где хранятся данные. SQL Server создает пользователя и схему в базе данных при первой попытке создания данных участником группы. Это происходит автоматически; вручную создавать схему и пользователя не нужно.

    Инструкции по использованию инструментов SQL Server для создания учетных записей, пользователей и схем смотри в документации к Microsoft SQL Server.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *