Инструменты пользователя

Инструменты сайта


Боковая панель

Введение

Статьи и часто задаваемые вопросы

Установка и настройка

Обработка ошибок

Полезные запросы SQL

Тематические группы

grant

GRANT

Версии сервера

Firebird v0.9 Firebird v1.0 Firebird v1.5 Firebird v2.0

Формат

GRANT {
<privileges> ON [TABLE] {tablename | viewname}
TO {   <object_list>
| <user_list> [WITH GRANT OPTION] 
| GROUP Unix_group}
| EXECUTE ON PROCEDURE procname 
TO {<object_list> | <user_list>}
| <role_granted> TO {PUBLIC | <role_grantee_list> [WITH ADMIN 
OPTION]}
} [{GRANTED BY | AS} [USER] grantor];

<privileges> ::= ALL [PRIVILEGES] | <privilege_list>

<privilege_list> ::= {
SELECT
| DELETE
| INSERT
| UPDATE [(col [,col …])]
| REFERENCES [(col [,col …])]
} [, <privilege_list> …]

<object_list> ::= {
PROCEDURE procname
| TRIGGER trigname
| VIEW viewname
| PUBLIC
} [, <object_list> …]

<user_list> ::= {
[USER] username
| [ROLE] rolename
| Unix_user
} [, <user_list> …]

<role_granted> ::= rolename [, rolename …]

<role_grantee_list> ::= [USER] username [, [USER] username  …]
Аргумент Описание
tablename Имя таблицы, к которой должно быть применена привилегия.
viewname Имя представления, к которому должно быть применена привилегия.
procname Имя хранимой процедуры, для которой должна быть выдана привилегия EXECUTE или которой будут даны привилегии.
col Столбец таблицы, к которому должна быть применена привилегия.
Unix_groupИмя группы пользователей в операционных системах семейства UNIX.
username Имя пользователя, для которого выдаются привилегии или которому назначается роль.
rolename Имя роли.
trigname Имя триггера.
grantor Пользователь от имени, которого предоставляются привилегии.

Описание

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

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

Для таблиц существуют следующие привилегии:

Привилегия Описание
ALL Объединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES.
SELECT Разрешает выборку данных из таблицы или представления.
INSERT Разрешает добавлять записи в таблицу или представление.
UPDATE Разрешает изменять записи в таблице или представлении. Можно указать ограничения, чтобы можно было изменять только указанные столбцы.
DELETE Разрешает удалять записи из таблицы или представления.
REFERENCES Привилегия позволяет создавать внешний ключ, который использует один или более столбцов этой таблицы, как родительский ключ. Вы можете ограничить эту привилегию для определенных столбцов.

Для выполнения хранимых процедур существует отдельная привилегия EXECUTE. Она позволяет выполнять хранимые процедуры и делать выборку данных из процедур выбора (с помощью оператора SELECT).

В предложении TO указывается список пользователей, ролей и объектов базы данных (процедур, триггеров и представлений) для которых будут выданы перечисленные привилегии. Необязательные предложения USER и ROLE позволяют уточнить, кому именно выдается привилегия. Если ключевое слово USER или ROLE не указано, то сервер проверяет, существует ли роль с данным именем, если таковой не существует, то привилегии назначаются пользователю. Существование пользователя, которому выдаются права, не проверяются при выполнении оператора GRANT. Если привилегия выдается объекту базы данных, то необходимо обязательно указывать тип объекта.

Замечание: Несмотря на то, что ключевые слова USER и ROLE не обязательные, желательно использовать их, чтобы избежать путаницы.

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

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

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

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

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

При предоставлении прав в базе данных в качестве лица, предоставившего эти права, обычно записывается текущий пользователь. Используя предложение GRANTED BY можно предоставлять права от имени другого пользователя. При использовании оператора REVOKE после GRANTED BY права будут удалены только в том случае, если они были зарегистрированы от удаляющего пользователя. Для облегчения миграции из некоторых других реляционных СУБД нестандартное предложение AS поддерживается как синоним оператора GRANTED BY.

Предложение GRANTED BY может использовать:

  • Владелец базы данных;
  • SYSDBA;
  • Любой пользователь, имеющий права на роль RDB$ADMIN и указавший ее при соединении с базой данных;
  • При использовании флага AUTO ADMIN MAPPING - любой администратор операционной системы Windows (при условии использования сервером доверенной авторизации - trusted authentication), даже без указания роли.

Даже владелец роли не может использовать GRANTED BY, если он не находится в вышеупомянутом списке.

Пример

GRANT SELECT, DELETE ON COUNTRY TO CHLOE WITH GRANT OPTION;

GRANT EXECUTE ON PROCEDURE GET_EMP_PROJ TO PROCEDURE ADD_EMP_PROJ, LUIS;

GRANT SELECT, UPDATE ON JOB TO PROCEDURE GET_EMP_PROJ;

См. также

Только авторизованные участники могут оставлять комментарии.
grant.txt · Последние изменения: 2014/12/27 08:06 — 109.195.129.114