Создание нового пользователя sql server. Получение административных привилегий в Microsoft SQL Server. Создание имени входа на SQL Server с проверкой подлинности Windows

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

Для этого вы можете использовать инструмент геообработки или скрипт Создать пользователя базы данных (Create Database User) чтобы выполнить следующие операции:

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

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

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

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

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

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

  1. Запустите ArcMap или ArcCatalog.
  2. Подключитесь к базе данных или базе геоданных , используя учетную запись с правами системного администратора в экземпляре SQL Server.
  3. Откройте инструмент Создать пользователя базы данных (Create Database User) .

    Инструмент находится в группе инструментов Администрирование базы геоданных (Geodatabase Administration) набора Управление данными (Data Management).

  4. Укажите подключение к базе данных в поле Входное подключение к базе данных (Input Database Connection) .
  5. Выберите, будете ли вы создавать учетную запись с аутентификацией SQL Server или использовать существующую учетную запись с аутентификацией Windows.
    • Оставьте не отмеченным, чтобы создать пользователя с аутентификацией средствами SQL Server. Обратите внимание, что по умолчанию экземпляры SQL Server используют только аутентификацию Windows. Если ваш экземпляр не настроен для использования аутентификации SQL Server или Windows, вы не сможете создать пользователя с аутентификацией средствами базы данных.
    • Отметьте Создать пользователя с аутентификацией средствами операционной системы (Create Operating System Authenticated User) , чтобы использовать существующую учетную запись с аутентификацией средствами Windows.
  6. Введите имя пользователя базы данных, который будет создан инструментом.

    Если вы выберите создание учетной записи с аутентификацией SQL Server, имя, которое вы введете, также будет использовано для учетной записи.

  7. Введите пароль пользователя базы данных.
  8. Если у вас уже определена роль, к которой вы хотите добавить пользователя, укажите ее.
  9. Щелкните OK , чтобы запустить инструмент.

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

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

  1. Создайте текстовый файл на клиентском компьютере 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 " , 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 (" \n Warning: %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 for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for 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" = 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 (" \n Creating 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 )

    Вы можете запустить скрипт на компьютере с установленным ArcGIS for Desktop (Standard или Advanced), ArcGIS for Server (Standard или Advanced) или ArcGIS Engine с дополнительным модулем Geodatabase Update.

  2. Сохраните файл с расширением .py .
  3. Запустите скрипт, задав опции и указав сведения, соответствующие вашему экземпляру SQL Server и пользователю, которого вы хотите создать.

    В следующем примере имя созданного скрипта – 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

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

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

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

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

Давайте приведу сразу пример SQL-запроса на создание нового пользователя базы данных :

GRANT SELECT , INSERT , UPDATE , CREATE , PROCESS ON * . * TO "MyUser"@"localhost" IDENTIFIED BY "123456" WITH GRANT OPTION MAX_QUERIES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 10

Теперь давайте разберём SQL-запрос на изменение существующих пользователей :

GRANT SELECT , INSERT , UPDATE , CREATE , PROCESS ON * . * TO "MyUser"@"test1.ru" IDENTIFIED BY PASSWORD "565491d704013245" WITH GRANT OPTION MAX_QUERIES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 10

Как видите, синтаксис АБСОЛЮТНО такой же, как и на создание нового пользователя. Единственное отличие - это то, что пользователь "MyUser " уже существует. Вот и всё.

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

DELETE FROM `user` WHERE CONVERT(User USING cp1251) = CONVERT("MyUser" USING cp1251) AND CONVERT(Host USING cp1251) = CONVERT("test1.ru" USING cp1251)
DELETE FROM `db` WHERE CONVERT(User USING cp1251) = CONVERT("MyUser" USING cp1251) AND CONVERT(Host USING cp1251) = CONVERT("test1.ru" USING cp1251)
DELETE FROM `tables_priv` WHERE CONVERT(User USING cp1251) = CONVERT("MyUser" USING cp1251) AND CONVERT(Host USING cp1251) = CONVERT("test1.ru" USING cp1251)
DELETE FROM `columns_priv` WHERE CONVERT(User USING cp1251) = CONVERT("MyUser" USING cp1251) AND CONVERT(Host USING cp1251) = CONVERT("test1.ru" USING cp1251)

Много, не спорю, но это единственный способ удалить пользователя. Либо вручную через PHPMyAdmin . Единственное, что надо изменить в этом шаблоне - это имя пользователя и хост, а всё остальное Вам вряд ли придётся менять.

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

1. Добавление нового пользователя

Запускаем программу «Среда SQL Server Management Studio » («Пуск » — «Microsoft SQL Server 2008 R2 » — «Среда SQL Server Management Studio ») .

В открывшемся окне выбираем:

  • Тип сервера: «Компонент Database Engine » .
  • Имя сервера в формате «<Имя компьютера>\<Идентификатор экземпляра> » , где
    <Имя компьютера> — имя физического компьютера на котором установлен SQL Server (в моем примере «S4 »).
    <Идентификатор экземпляра> — задается только в случае подключения к именованному экземпляра SQL Server.
  • Проверка подлинности:«Проверка подлинности SQL Server » или «Проверка подлинности Windows »
  • Имя входа: имя пользователя SQL Server.
  • Пароль: в случае проверки подлинности SQL Server, пароль для выбранного пользователя.

После чего нажимаем «Соединить » .

Если все введено верно, в окне «Обозреватель объектов » мы увидим вкладку с именем нашего SQL-сервера. В нем раскрываем вкладку «Безопасность » — «Имена входа » и в контекстном меню выбираем «Создать имя входа » .

Откроется окно «Создание имени входа » . На вкладке «Общие » заполняем:

  • Имя входа: наименование пользователя SQL.
  • Проверку подлинности выбираем: SQL Server.
  • Придумываем пароль для пользователя.

(При необходимости можно определить и остальные настройки безопасности). Затем переходим на вкладку «Роли сервера » .

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

  • sysadmin

Если создается пользователь для подключения программ или , то достаточно указания ролей

  • dbcreator
  • processadmin
  • public

назначается всем пользователям.

Указав все необходимые роли для создаваемого пользователя нажимаем «ОК » .

На этом процедура создания пользователя завершена.

2. Создание новой базы данных

Для добавления новой базы данных, в «Среде Microsoft SQL Server Management Studio » кликаем правой кнопкой мышки на вкладке «Базы данных » и выбираем «Создать базу данных » .

В открывшемся окне «Создание базы данных » на вкладке «Общие » заполняем:

  • Задаем имя базы данных. Имя базы данных не должно начинаться с цифры или иметь пробелы в названии, иначе получим ошибку:
    «неправильный синтаксис около конструкции %имя базы данных%» .
  • В качестве владельца выбираем созданного на предыдущем шаге пользователя.

Затем переходим на вкладку «Параметры » .

Здесь необходимо выбрать «Модель восстановления » базы данных и «Уровень совместимости » . Эти параметры зависят от того приложения, которое будет с создаваемой базой данных на SQL сервере. Например для необходимо задать

  • Уровень совместимости: «SQL Server 2000 (80) » .

Очень внимательно стоит отнестись к параметру «Модель восстановления » создаваемой базы данных. Подробно про модели восстановления баз данных и о том, на что данный параметр влияет, я писал . Если сомневаетесь — выбирайте простую модель восстановления.

Определившись с параметрами нажимаем «ОК » .

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

Помогла ли Вам данная статья?

Добавление пользователей базы данных

Исходники баз данных

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

Управлять пользователями баз данных можно с помощью среды Management Studio или инструкций языка Transact-SQL. Оба эти способа рассматриваются в следующих подразделах.

Управление пользователями базы данных с помощью среды Management Studio

Чтобы добавить пользователя базы данных с помощью среды Management Studio, разверните узел сервера в окне Object Explorer и в нем папку "Databases", в этой папке разверните узел требуемой базы данных, а в ней папку "Security". Щелкните правой кнопкой мыши папку "Users" и в контекстном меню выберите пункт New User. Откроется диалоговое окно Database User - New, в котором следует ввести имя пользователя User name и выбрать соответствующее регистрационное имя Login name:

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

Управление безопасностью базы данных посредством инструкций языка Transact-SQL

Для добавления пользователя в текущую базу данных используется инструкция CREATE USER . Синтаксис этой инструкции выглядит таким образом:

CREATE USER user_name Соглашения по синтаксису

Параметр user_name определяет имя, по которому пользователь идентифицируется в базе данных, а в параметре login указывается регистрационное имя, для которого создается данный пользователь. В параметрах cert_name и key_name указываются соответствующий сертификат и асимметричный ключ соответственно. Наконец, в параметре WITH DEFAULT_SCHEMA указывается первая схема, с которой сервер базы данных будет начинать поиск для разрешения имен объектов для данного пользователя базы данных.

Применение инструкции CREATE USER показано в примере ниже:

USE SampleDb; CREATE USER Vasya FOR LOGIN Vasya; CREATE USER Alex FOR LOGIN WITH DEFAULT_SCHEMA = poco;

Для успешного выполнения на вашем компьютере второй инструкции примера требуется сначала создать учетную запись Windows для пользователя Alexandr и вместо домена (сервера) ProfessorWeb указать имя вашего сервера.

В этом примере первая инструкция CREATE USER создает пользователя базы данных Vasya для пользователя Vasya учетной записи Windows. Схемой по умолчанию для пользователя Vasya будет dbo, поскольку для параметра DEFAULT_SCHEMA значение не указано. Вторая инструкция CREATE USER создает нового пользователя базы данных Alex. Схемой по умолчанию для этого пользователя будет схема poco. (Параметру DEFAULT_SCHEMA можно присвоить в качестве значения схему, которая в данное время не существует в базе данных.)

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

С помощью инструкции ALTER USER можно изменить имя пользователя базы данных, изменить схему пользователя по умолчанию или переопределить пользователя с другим регистрационным именем. Подобно инструкции CREATE USER, пользователю можно присвоить схему по умолчанию прежде, чем она создана.

Для удаления пользователя из текущей базы данных применяется инструкция DROP USER . Пользователя, который является владельцем защищаемых объектов (объектов базы данных), удалить нельзя.

Схемы базы данных по умолчанию

Каждая база данных в системе имеет следующие схемы по умолчанию.