Урок 2. Настройка разрешений для объектов базы данныхLesson 2: Configure permissions on database objects
SQL Server
База данных SQL Azure
Azure Synapse Analytics
Parallel Data Warehouse
Предоставление пользователю доступа к базе данных включает три шага.Granting a user access to a database involves three steps. Вначале создается имя входа.First, you create a login. Имя входа дает пользователю возможность подключиться к компоненту Компонент SQL Server Database EngineSQL Server Database Engine.The login lets the user connect to the Компонент SQL Server Database EngineSQL Server Database Engine. Затем имя входа настраивается как пользователь в заданной базе данных.Then you configure the login as a user in the specified database. Наконец, предоставляются пользовательские разрешения на объекты базы данных.And finally, you grant that user permission to database objects. В этом занятии показаны все три шага, а также создание представления и хранимой процедуры в виде объекта.This lesson shows you these three steps, and shows you how to create a view and a stored procedure as the object.
Примечание
В этом занятии используются объекты, созданные в разделе Урок 1. Создание объектов баз данных.This lesson relies on objects created in Lesson 1 - Create database objects. Пройдите урок 1, прежде чем переходить к уроку 2.Complete Lesson 1 before continuing on to lesson 2.
Предварительные требованияPrerequisites
Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.To complete this tutorial, you need SQL Server Management Studio and access to a SQL Server instance.
- Установите SQL Server Management Studio.Install SQL Server Management Studio.
Если у вас нет доступа к экземпляру SQL Server, выберите свою платформу в следующих ссылках.If you don't have access to a SQL Server instance, select your platform from the following links. При выборе проверки подлинности SQL используйте учетные данные SQL Server.If you choose SQL Authentication, use your SQL Server login credentials.
- Windows: скачать выпуск SQL Server 2017 Developer Edition.Windows: Download SQL Server 2017 Developer Edition.
- macOS: скачать SQL Server 2017 для Docker.macOS: Download SQL Server 2017 on Docker.
Мы слушаем! Если вы обнаружили в этой статье устаревшие или недостоверные сведения, например инструкции или пример кода, сообщите нам.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Можно воспользоваться кнопкой Эта страница в разделе Отзывы внизу страницы.You can click the This page button in the Feedback section at the bottom of this page. Обычно мы читаем отзывы про материалы по SQL на следующий день.We read every item of feedback about SQL, typically the next day. Благодарим вас.Thanks.
Создает входCreate a login
Чтобы получить доступ к компоненту Компонент Database EngineDatabase Engine, необходимо иметь имя входа.To access the Компонент Database EngineDatabase Engine, users require a login. Имя входа может идентифицировать пользователя как учетную запись Windows или как члена группы Windows, или имя входа может быть именем входа SQL ServerSQL Server , которое существует только в SQL ServerSQL Server.The login can represent the user's identity as a Windows account or as a member of a Windows group, or the login can be a SQL ServerSQL Server login that exists only in SQL ServerSQL Server. При возможности используйте проверку подлинности Windows.Whenever possible you should use Windows Authentication.
По умолчанию администраторы компьютера имеют полный доступ к SQL ServerSQL Server.By default, administrators on your computer have full access to SQL ServerSQL Server. Для этого занятия нужно иметь пользователя с меньшим правом доступа; следовательно, вы создадите новую локальную учетную запись проверки подлинности Windows на компьютере.For this lesson, we want to have a less privileged user; therefore, you will create a new local Windows Authentication account on your computer. Чтобы сделать это, нужно быть администратором на своем компьютере.To do this, you must be an administrator on your computer. После этого нужно предоставить новому пользователю доступ к SQL ServerSQL Server.Then you will grant that new user access to SQL ServerSQL Server.
Создание учетной записи WindowsCreate a new Windows account
- Нажмите кнопку Пуск, выберите Выполнить, в поле Открыть введите %SystemRoot%\system32\compmgmt.msc /s и нажмите кнопку OK , чтобы открыть программу "Управление компьютером".Click Start, click Run, in the Open box, type %SystemRoot%\system32\compmgmt.msc /s, and then click OK to open the Computer Management program.
- В пункте Служебные программы откройте Локальные пользователи и группы, щелкните правой кнопкой мыши элемент Пользователи и выберите пункт Новый пользователь.Under System Tools, expand Local Users and Groups, right-click Users, and then click New User.
- В поле Имя пользователя введите Mary.In the User name box type Mary.
- В полях Пароль и Подтверждение пароля введите надежный пароль и нажмите кнопку Создать , чтобы создать нового локального пользователя Windows.In the Password and Confirm password box, type a strong password, and then click Create to create a new local Windows user.
Создание имени для входа SQLCreate a SQL login
В окне редактора запросов среды SQL Server Management StudioSQL Server Management Studioвведите и выполните следующий исходный код, заменив computer_name
на имя компьютера.In a Query Editor window of SQL Server Management StudioSQL Server Management Studio, type and execute the following code replacing computer_name
with the name of your computer. FROM WINDOWS
указывает, что Windows проверит подлинность пользователя.FROM WINDOWS
indicates that Windows will authenticate the user. Необязательный аргумент DEFAULT_DATABASE
соединяет Mary
с базой данных TestData
, если только в ее строке соединения не указана другая база данных.The optional DEFAULT_DATABASE
argument connects Mary
to the TestData
database, unless her connection string indicates another database. Эта инструкция рассматривает точку с запятой в виде необязательного завершения инструкции языка Transact-SQLTransact-SQL .This statement introduces the semicolon as an optional termination for a Transact-SQLTransact-SQL statement.
CREATE LOGIN [computer_name\Mary]
FROM WINDOWS
WITH DEFAULT_DATABASE = [TestData];
GO
Этим авторизируется имя пользователя Mary
, проверенное компьютером, чтобы получить доступ к экземпляру SQL ServerSQL Server.This authorizes a user name Mary
, authenticated by your computer, to access this instance of SQL ServerSQL Server. Если на компьютере находится более одного экземпляра SQL ServerSQL Server , нужно создать имя входа для каждого экземпляра, к которому Mary
должна иметь доступ.If there is more than one instance of SQL ServerSQL Server on the computer, you must create the login on each instance that Mary
must access.
Примечание
Поскольку Mary
не является доменной учетной записью, это имя пользователя может быть принято только на данном компьютере.Because Mary
is not a domain account, this user name can only be authenticated on this computer.
Предоставление доступа к базе данныхGrant access to a database
Теперь Mary имеет доступ к данному экземпляру SQL ServerSQL Server, но не имеет разрешения на доступ к базе данных.Mary now has access to this instance of SQL ServerSQL Server, but does not have permission to access the databases. У нее даже нет доступа к своей базе данных по умолчанию TestData , пока вы не авторизируете ее в качестве пользователя базы данных.She does not even have access to her default database TestData until you authorize her as a database user.
Чтобы предоставить Mary доступ, переключитесь на базу данных TestData и при помощи инструкции CREATE USER сопоставьте ее имя входа с именем пользователя «Mary».To grant Mary access, switch to the TestData database, and then use the CREATE USER statement to map her login to a user named Mary.
Создание пользователя в базе данныхTo create a user in a database
Введите и выполните следующие инструкции (заменяя computer_name
на имя компьютера), чтобы предоставить пользователю Mary
доступ к базе данных TestData
.Type and execute the following statements (replacing computer_name
with the name of your computer) to grant Mary
access to the TestData
database.
USE [TestData];
GO
CREATE USER [Mary] FOR LOGIN [computer_name\Mary];
GO
Теперь пользователь Mary имеет доступ к SQL ServerSQL Server и к базе данных TestData
.Now, Mary has access to both SQL ServerSQL Server and the TestData
database.
Создание представлений и хранимых процедурCreate views and stored procedures
Будучи администратором, можно выполнять инструкцию SELECT из таблицы Products и представления vw_Names, а также выполнять процедуру pr_Names; однако Мэри всего этого не может.As an administrator, you can execute the SELECT from the Products table and the vw_Names view, and execute the pr_Names procedure; however, Mary cannot. Чтобы предоставить Mary необходимые разрешения, воспользуйтесь инструкцией GRANT.To grant Mary the necessary permissions, use the GRANT statement.
Предоставление разрешений на хранимые процедурыGrant permission to stored procedure
Выполните следующую инструкцию, чтобы предоставить Mary
разрешение на EXECUTE
для хранимой процедуры pr_Names
.Execute the following statement to give Mary
the EXECUTE
permission for the pr_Names
stored procedure.
GRANT EXECUTE ON pr_Names TO Mary;
GO
В данном сценарии Mary имеет доступ только к таблице Products посредством хранимой процедуры.In this scenario, Mary can only access the Products table by using the stored procedure. Если Mary нужно выполнять инструкцию SELECT к представлению, нужно выполнить инструкцию GRANT SELECT ON vw_Names TO Mary
.If you want Mary to be able to execute a SELECT statement against the view, then you must also execute GRANT SELECT ON vw_Names TO Mary
. Чтобы удалить доступ к объектам базы данных, воспользуйтесь инструкцией REVOKE.To remove access to database objects, use the REVOKE statement.
Примечание
Если таблицей, представлением или хранимой процедурой не владеет та же схема, процесс предоставления прав становится более сложным.If the table, the view, and the stored procedure are not owned by the same schema, granting permissions becomes more complex.
Об инструкции GRANTAbout GRANT
Нужно иметь разрешение на EXECUTE, чтобы выполнить хранимую процедуру.You must have EXECUTE permission to execute a stored procedure. Нужно иметь разрешения на SELECT, INSERT, UPDATE и DELETE, чтобы получить доступ к данным и изменять их.You must have SELECT, INSERT, UPDATE, and DELETE permissions to access and change data. Инструкция GRANT также используется для других разрешений, например для разрешений на создание таблиц.The GRANT statement is also used for other permissions, such as permission to create tables.
Дальнейшие действияNext steps
В следующей статье вы узнаете, как удалить объекты базы данных, созданные в других уроках.The next article teaches you how to remove database objects you created in the other lessons.
Дополнительные сведения см. в следующей статье:Go to the next article to learn more: