Предоставление разрешений на хранимую процедуру
В этой статье описывается, как предоставить разрешения хранимой процедуре в SQL Server, используя среду SQL Server Management Studio или Transact-SQL. Разрешения можно предоставить существующему пользователю, роли базы данных или роли приложения в базе данных.
Ограничения
Permissions
Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно включает предоставляемое. Необходимо разрешение ALTER на схему, которой принадлежит процедура, или разрешение CONTROL на процедуру. Дополнительные сведения см. в разделе GRANT, предоставление разрешений на объект (Transact-SQL).
Использование среды SQL Server Management Studio
Предоставление разрешений на хранимую процедуру
В обозревателе объектов подключитесь к экземпляру Компонент Database Engine и разверните его.
Последовательно разверните узел Базы данных, базу данных, которой принадлежит процедура, и узел Программирование.
Разверните узел Хранимые процедуры, щелкните правой кнопкой мыши процедуру для предоставления разрешений и выберите Свойства.
Для предоставления разрешений пользователю, роли базы данных или роли приложения нажмите Поиск.
В пункте Выбрать пользователей или ролей нажмите Типы объектов для добавления или исключения необходимых пользователей и ролей.
Нажмите кнопку Обзор, чтобы показать список пользователей или ролей. Выберите пользователей или роли, которым следует предоставить разрешения.
В сетке Явно указанные разрешения выберите разрешения для предоставления определенному пользователю или роли. Описание разрешений см. в разделе Разрешения (компонент Database Engine).
Выбор Предоставить означает, что получателю разрешения предоставляется указанное разрешение. Выбор параметра Право передачи означает, что получатель разрешения имеет возможность предоставить указанное разрешение другим участникам.
Использование Transact-SQL
Предоставление разрешений на хранимую процедуру
Установите соединение с компонентом Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Предоставление разрешений всем хранимым процедурам в схеме
Установите соединение с компонентом Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Создание нового пользователя и настройка прав доступа в MySQL
В современных реалиях сложно найти даже самое простое приложение, которое бы не требовало подключения базы данных – места для хранения электронной информации. Обычно для работы с такими хранилищами используется система управления базами данных. MySQL – самая распространенная и популярная СУБД в мире.
Давайте выясним, чем же она хороша и как с ней работать.
База данных MySQL: что это такое и в чем ее преимущества
MySQL – это реляционная система управления базами данных с открытым исходным кодом, написанная на языках программирования C и C++. Благодаря ей можно оптимизировать работу сайта или мобильного/десктопного приложения.
База данных – это место для структурированного хранения данных. Например, чтобы найти в смартфоне сохраненную картинку, мы используем для этого галерею. В данном случае картинки – это данные, а галерея – база данных.
Такой же подход используется и на многих сайтах, где подключены формы регистрации, системы оформления заказа и прочее. Когда вы регистрируетесь на сервисе, вся полученная от вас информация сохраняется в базе данных – благодаря этому вы можете повторно войти в свой аккаунт и получить доступ к внесенным ранее изменениям.
Если вести крупный ресурс без БД, то на это будет уходить очень много времени и средств. Базы данных группируют и упорядочивают информацию, упрощают получение доступа к ней. Чтобы администрировать такой большой поток данных, используются СУБД: MySQL, Microsoft SQL Server, PostgreSQL и другие.
MySQL хранит всю информацию в табличном виде. Извлечь данные из одной или нескольких таблиц можно с помощью запроса. Запросы в MySQL – это то, на чем все строится, с их помощью можно выполнять всевозможные операции с данным.
Столбцы таблицы всегда строго упорядочены, а расположение строк при необходимости может меняться в зависимости от информации в ячейках. Посмотрите на простую адресную книжку в виде таблицы:
Принцип работы с таблицами следующий: к серверу, на котором хранятся и обрабатываются структурированные данные, подключаются клиенты для получения необходимой информации, а для взаимодействия между пользователем и сервером используется специальное ПО. Заполнение подобных и более крупных таблиц происходит с помощью языка программирования SQL.
Исходя из пользовательского опыта, можно выделить следующие особенности MySQL:
На этом с теоретической частью закончим.
Создание нового пользователя в MySQL
После установки MySQL в базе данных автоматически будет создан новый пользователь root. Работать под таким именем небезопасно, поэтому рекомендуется создавать нового пользователя и выполнять необходимые действия под ним. Давайте рассмотрим два способа создания нового пользователя в MySQL – через phpMyAdmin и через консоль.
Вариант 1: с помощью phpMyAdmin
Нам потребуется phpMyAdmin – приложение для работы с базой данных, которое обычно по умолчанию предустановлено на хостинге либо локальном сервере.
Чтобы добавить нового пользователя в phpMyAdmin, воспользуемся инструкцией:
Подробнее о правах доступа мы поговорим чуть позже, а пока давайте рассмотрим альтернативный метод добавления пользователя в БД.
Вариант 2: через консоль
Если вы подключаетесь к серверу по SSH, то этот способ для вас. Нам потребуется выполнить несколько команд:
Первым дело активируем сервер базы данных:
Создадим нового пользователя:
В кавычках потребуется изменить следующие данные: user – имя пользователя, pswrd – пароль.
Пока что пользователь не имеет разрешений, а значит, не может получить доступ к MySQL. Для решения такой проблемы пропишем еще одну строчку кода:
Мы выдали указанному пользователю все доступные права. Осталось сохранить внесенные изменения с помощью команды:
Готово! Теперь вы знаете, как создать нового пользователя в MySQL с правами доступа root.
Права доступа
В MySQL выделяют следующие права доступа:
Как изменить права доступа в MySQL
Чтобы предоставить те или иные права доступа, мы можем воспользоваться административной панелью или консолью.
Способ 1: через phpMyAdmin
Изменяем права доступа:
Таким образом, мы настроили права доступа для одного пользователя. Впоследствии вы сможете их изменить аналогичным способом.
Вариант 2: в терминале
В данном случае нам потребуется всего несколько команд. Если требуется изменить права доступа для выбранного пользователя MySQL, то необходимо выполнить следующее:
Значения внутри скобок необходимо заменить:
Если нужно указать несколько прав, то их необходимо прописать через запятую:
Если нужно удалить права у выбранного пользователя:
Полностью удалить пользователя можно командой:
Как посмотреть права доступа в MySQL
Для того чтобы посмотреть, какие права доступа выданы пользователю MySQL, достаточно в консоли прописать команду:
На этом моя статья подходит к концу. Надеюсь, что создать нового пользователя в MySQL для вас больше не проблема. Спасибо за внимание!
Урок 2. Настройка разрешений для объектов базы данных
Предоставление пользователю доступа к базе данных включает три шага. Вначале создается имя входа. Имя входа дает пользователю возможность подключиться к компоненту Компонент SQL Server Database Engine. Затем имя входа настраивается как пользователь в заданной базе данных. Наконец, предоставляются пользовательские разрешения на объекты базы данных. В этом занятии показаны все три шага, а также создание представления и хранимой процедуры в виде объекта.
В этом занятии используются объекты, созданные в разделе Урок 1. Создание объектов баз данных. Пройдите урок 1, прежде чем переходить к уроку 2.
Предварительные требования
Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.
Если у вас нет доступа к экземпляру SQL Server, выберите свою платформу в следующих ссылках. При выборе проверки подлинности SQL используйте учетные данные SQL Server.
Мы слушаем! Если вы обнаружили в этой статье устаревшие или недостоверные сведения, например инструкции или пример кода, сообщите нам. Можно воспользоваться кнопкой Эта страница в разделе Отзывы внизу страницы. Обычно мы читаем отзывы про материалы по SQL на следующий день. Благодарим вас.
Создает вход
По умолчанию администраторы компьютера имеют полный доступ к SQL Server. Для этого занятия нужно иметь пользователя с меньшим правом доступа; следовательно, вы создадите новую локальную учетную запись проверки подлинности Windows на компьютере. Чтобы сделать это, нужно быть администратором на своем компьютере. После этого нужно предоставить новому пользователю доступ к SQL Server.
Создание учетной записи Windows
Создание имени для входа SQL
Поскольку Mary не является доменной учетной записью, это имя пользователя может быть принято только на данном компьютере.
Предоставление доступа к базе данных
Чтобы предоставить Mary доступ, переключитесь на базу данных TestData и при помощи инструкции CREATE USER сопоставьте ее имя входа с именем пользователя «Mary».
Создание пользователя в базе данных
Создание представлений и хранимых процедур
Будучи администратором, можно выполнять инструкцию SELECT из таблицы Products и представления vw_Names, а также выполнять процедуру pr_Names; однако Мэри всего этого не может. Чтобы предоставить Mary необходимые разрешения, воспользуйтесь инструкцией GRANT.
Предоставление разрешений на хранимые процедуры
Если таблицей, представлением или хранимой процедурой не владеет та же схема, процесс предоставления прав становится более сложным.
Об инструкции GRANT
Нужно иметь разрешение на EXECUTE, чтобы выполнить хранимую процедуру. Нужно иметь разрешения на SELECT, INSERT, UPDATE и DELETE, чтобы получить доступ к данным и изменять их. Инструкция GRANT также используется для других разрешений, например для разрешений на создание таблиц.
Дальнейшие действия
В следующей статье вы узнаете, как удалить объекты базы данных, созданные в других уроках.
Дополнительные сведения см. в следующей статье:
GRANT, предоставление разрешений на базу данных (Transact-SQL)
Предоставляет разрешения на базу данных в SQL Server.

Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
permission — указывает предоставляемое разрешение для базы данных. Список разрешений см. в подразделе «Примечания» далее в этом разделе.
ALL — этот параметр предоставляет не все возможные разрешения. Предоставление разрешения ALL эквивалентно предоставлению следующих разрешений: BACKUP DATABASE, BACKUP LOG, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE и CREATE VIEW.
PRIVILEGES — включено для обеспечения совместимости с требованиями ANSI-92. Не изменяет работу ALL.
WITH GRANT OPTION — указывает, что субъекту будет дана возможность предоставлять заданное разрешение другим субъектам.
Database_user — указывает пользователя базы данных.
Database_role — указывает роль базы данных.
Application_role — применимо к: SQL Server 2008 и выше, База данных SQL
Указывает роль приложения.
Database_user_mapped_to_Windows_User — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с пользователем Windows.
Database_user_mapped_to_Windows_Group — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с группой Windows.
Database_user_mapped_to_certificate — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с сертификатом.
Database_user_mapped_to_asymmetric_key — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с асимметричным ключом.
Database_user_with_no_login — указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.
Remarks
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Пример: Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате — выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец.
База данных — это защищаемый объект, хранящийся на сервере, который является родителем базы данных в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно предоставлять в базе данных, перечислены в следующей таблице вместе с общими разрешениями, неявно содержащими их.
| Разрешение в базе данных | Содержится в разрешении базы данных | Подразумевается в разрешении сервера |
|---|---|---|
| ADMINISTER DATABASE BULK OPERATIONS Область применения: База данных SQL. | CONTROL | CONTROL SERVER |
| ALTER | CONTROL | ALTER ANY DATABASE |
| ALTER ANY APPLICATION ROLE | ALTER | CONTROL SERVER |
| ALTER ANY ASSEMBLY | ALTER | CONTROL SERVER |
| ALTER ANY ASYMMETRIC KEY | ALTER | CONTROL SERVER |
| ALTER ANY CERTIFICATE | ALTER | CONTROL SERVER |
| ALTER ANY COLUMN ENCRYPTION KEY | ALTER | CONTROL SERVER |
| ALTER ANY COLUMN MASTER KEY DEFINITION | ALTER | CONTROL SERVER |
| ALTER ANY CONTRACT | ALTER | CONTROL SERVER |
| ALTER ANY DATABASE AUDIT | ALTER | ALTER ANY SERVER AUDIT |
| ALTER ANY DATABASE DDL TRIGGER | ALTER | CONTROL SERVER |
| ALTER ANY DATABASE EVENT NOTIFICATION | ALTER | ALTER ANY EVENT NOTIFICATION |
| ALTER ANY DATABASE EVENT SESSION Применимо к: База данных SQL. | ALTER | ALTER ANY EVENT SESSION |
| ALTER ANY DATABASE SCOPED CONFIGURATION Применимо к: SQL Server 2016 (13.x); и выше, База данных SQL. | CONTROL | CONTROL SERVER |
| ALTER ANY DATASPACE | ALTER | CONTROL SERVER |
| ALTER ANY EXTERNAL DATA SOURCE | ALTER | CONTROL SERVER |
| ALTER ANY EXTERNAL FILE FORMAT | ALTER | CONTROL SERVER |
| ALTER ANY EXTERNAL LIBRARY Применимо к: SQL Server 2017 (14.x);. | CONTROL | CONTROL SERVER |
| ALTER ANY FULLTEXT CATALOG | ALTER | CONTROL SERVER |
| ALTER ANY MASK | CONTROL | CONTROL SERVER |
| ALTER ANY MESSAGE TYPE | ALTER | CONTROL SERVER |
| ALTER ANY REMOTE SERVICE BINDING | ALTER | CONTROL SERVER |
| ALTER ANY ROLE | ALTER | CONTROL SERVER |
| ALTER ANY ROUTE | ALTER | CONTROL SERVER |
| ALTER ANY SCHEMA | ALTER | CONTROL SERVER |
| ALTER ANY SECURITY POLICY Применимо к: База данных SQL Azure. | CONTROL | CONTROL SERVER |
| ALTER ANY SERVICE | ALTER | CONTROL SERVER |
| ALTER ANY SYMMETRIC KEY | ALTER | CONTROL SERVER |
| ALTER ANY USER | ALTER | CONTROL SERVER |
| AUTHENTICATE | CONTROL | AUTHENTICATE SERVER |
| BACKUP DATABASE | CONTROL | CONTROL SERVER |
| BACKUP LOG | CONTROL | CONTROL SERVER |
| CHECKPOINT | CONTROL | CONTROL SERVER |
| CONNECT | CONNECT REPLICATION | CONTROL SERVER |
| CONNECT REPLICATION | CONTROL | CONTROL SERVER |
| CONTROL | CONTROL | CONTROL SERVER |
| CREATE AGGREGATE | ALTER | CONTROL SERVER |
| CREATE ANY EXTERNAL LIBRARY Применимо к: SQL Server 2017 (14.x);. | CONTROL | CONTROL SERVER |
| CREATE ASSEMBLY | ALTER ANY ASSEMBLY | CONTROL SERVER |
| CREATE ASYMMETRIC KEY | ALTER ANY ASYMMETRIC KEY | CONTROL SERVER |
| CREATE CERTIFICATE | ALTER ANY CERTIFICATE | CONTROL SERVER |
| CREATE CONTRACT | ALTER ANY CONTRACT | CONTROL SERVER |
| CREATE DATABASE | CONTROL | CREATE ANY DATABASE |
| CREATE DATABASE DDL EVENT NOTIFICATION | ALTER ANY DATABASE EVENT NOTIFICATION | CREATE DDL EVENT NOTIFICATION |
| CREATE DEFAULT | ALTER | CONTROL SERVER |
| CREATE FULLTEXT CATALOG | ALTER ANY FULLTEXT CATALOG | CONTROL SERVER |
| CREATE FUNCTION | ALTER | CONTROL SERVER |
| CREATE MESSAGE TYPE | ALTER ANY MESSAGE TYPE | CONTROL SERVER |
| CREATE PROCEDURE | ALTER | CONTROL SERVER |
| CREATE QUEUE | ALTER | CONTROL SERVER |
| CREATE REMOTE SERVICE BINDING | ALTER ANY REMOTE SERVICE BINDING | CONTROL SERVER |
| CREATE ROLE | ALTER ANY ROLE | CONTROL SERVER |
| CREATE ROUTE | ALTER ANY ROUTE | CONTROL SERVER |
| CREATE RULE | ALTER | CONTROL SERVER |
| CREATE SCHEMA | ALTER ANY SCHEMA | CONTROL SERVER |
| CREATE SERVICE | ALTER ANY SERVICE | CONTROL SERVER |
| CREATE SYMMETRIC KEY | ALTER ANY SYMMETRIC KEY | CONTROL SERVER |
| CREATE SYNONYM | ALTER | CONTROL SERVER |
| CREATE TABLE | ALTER | CONTROL SERVER |
| CREATE TYPE | ALTER | CONTROL SERVER |
| CREATE VIEW | ALTER | CONTROL SERVER |
| CREATE XML SCHEMA COLLECTION | ALTER | CONTROL SERVER |
| DELETE | CONTROL | CONTROL SERVER |
| EXECUTE | CONTROL | CONTROL SERVER |
| EXECUTE ANY EXTERNAL SCRIPT Применимо к: SQL Server 2016 (13.x);. | CONTROL | CONTROL SERVER |
| EXECUTE EXTERNAL SCRIPT Применимо к: SQL Server 2019 (15.x). | EXECUTE ANY EXTERNAL SCRIPT | CONTROL SERVER |
| INSERT | CONTROL | CONTROL SERVER |
| KILL DATABASE CONNECTION Применимо к: База данных SQL Azure. | CONTROL | ALTER ANY CONNECTION |
| REFERENCES | CONTROL | CONTROL SERVER |
| SELECT | CONTROL | CONTROL SERVER |
| SHOWPLAN | CONTROL | ALTER TRACE |
| SUBSCRIBE QUERY NOTIFICATIONS | CONTROL | CONTROL SERVER |
| TAKE OWNERSHIP | CONTROL | CONTROL SERVER |
| UNMASK | CONTROL | CONTROL SERVER |
| UPDATE | CONTROL | CONTROL SERVER |
| VIEW ANY COLUMN ENCRYPTION KEY DEFINITION | CONTROL | VIEW ANY DEFINITION |
| VIEW ANY COLUMN MASTER KEY DEFINITION | CONTROL | VIEW ANY DEFINITION |
| VIEW DATABASE STATE | CONTROL | VIEW SERVER STATE |
| VIEW DEFINITION | CONTROL | VIEW ANY DEFINITION |
Разрешения
Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно включает предоставляемое.
При использовании параметра AS налагаются следующие дополнительные требования.
| AS granting_principal | Необходимо дополнительное разрешение |
|---|---|
| пользователь базы данных; | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
| пользователь базы данных, сопоставленный с именем входа Windows; | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
| Пользователь базы данных, сопоставленный группе Windows | Членство в группе Windows, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
| пользователь базы данных, сопоставленный с сертификатом; | Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
| пользователь базы данных, сопоставленный с асимметричным ключом; | Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
| Пользователь базы данных, не сопоставленный ни с одним участником на уровне сервера | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
| роль базы данных; | Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin. |
| Роль приложения | Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin. |
Владельцы объектов могут предоставлять разрешения на объекты, которыми они владеют. Участники, имеющие разрешение CONTROL на защищаемый объект, могут предоставлять разрешение на этот защищаемый объект.
Примеры
A. Предоставление разрешения на создание таблиц
Б. Предоставление разрешения SHOWPLAN роли приложения
Применимо к: SQL Server 2008 и выше, База данных SQL
В. Предоставление разрешения CREATE VIEW с параметром GRANT OPTION
В следующем примере пользователю CREATE VIEW предоставляется разрешение AdventureWorks2012 в базе данных CarmineEs с правом предоставлять разрешение CREATE VIEW другим участникам.






