FirebirdSQL logo

GRANT

Назначение

Предоставление привилегий или назначение ролей.

Доступно в

DSQL

Синтаксис (предоставление привилегий)
GRANT <privileges>
  TO <grantee_list>
  [WITH GRANT OPTION]
  [{GRANTED BY | AS} [USER] grantor]

<privileges> ::=
    <table_privileges> | <execute_privilege>
  | <usage_privilege>  | <ddl_privileges>
  | <db_ddl_privilege>

<table_privileges> ::=
  {ALL [PRIVILEGES] | <table_privilege_list> }
    ON [TABLE] {table_name | view_name}

<table_privilege_list> ::=
  <table_privilege> [, <tableprivilege> ...]

<table_privilege> ::=
    SELECT | DELETE | INSERT
  | UPDATE [(col [, col ...])]
  | REFERENCES [(col [, col ...)]

<execute_privilege> ::= EXECUTE ON {
    PROCEDURE proc_name
  | FUNCTION func_name
  | PACKAGE package_name }

<usage_privilege> ::= USAGE ON {
    EXCEPTION exception_name
  | {GENERATOR | SEQUENCE} sequence_name }

<ddl_privileges> ::=
  {ALL [PRIVILEGES] | <ddl_privilege_list>} <object_type>

<ddl_privilege_list> ::=
  <ddl_privilege> [, <ddl_privilege> ...]

<ddl_privilege> ::= CREATE | ALTER ANY | DROP ANY

<object_type> ::=
    CHARACTER SET | COLLATION | DOMAIN | EXCEPTION
  | FILTER | FUNCTION | GENERATOR | PACKAGE
  | PROCEDURE | ROLE | SEQUENCE | TABLE | VIEW

<db_ddl_privileges> ::=
  {ALL [PRIVILEGES] | <db_ddl_privilege_list>} {DATABASE | SCHEMA}

<db_ddl_privilege_list> ::=
  <db_ddl_privilege> [, <db_ddl_privilege> ...]

<db_ddl_privilege> ::= CREATE | ALTER | DROP

<grantee_list> ::= <grantee> [, <grantee> ...]

<grantee> ::=
    PROCEDURE proc_name  | FUNCTION func_name
  | PACKAGE package_name | TRIGGER trig_name
  | VIEW view_name       | ROLE role_name
  | [USER] username      | GROUP Unix_group
  | PUBLIC
  | <sys_privileges>

<sys_privileges> ::= SYSTEM PRIVILEGE <sys_privileges_list>

<sys_privileges_list> ::= <sys_privilege> [, <sys_privilege> [, <sys_privilege> ...]]
Синтаксис (назначение ролей)
GRANT <role_granted>
  TO <role_grantee_list>
  [WITH ADMIN OPTION]
  [{GRANTED BY | AS} [USER] grantor]

<role_granted> ::= [DEFAULT] role_name [, [DEFAULT] role_name ...]

<role_grantee_list> ::=
  <role_grantee> [, <role_grantee> ...]

<role_grantee> ::=
    [USER] username
  | [ROLE] grantee_role_name
Table 1. Параметры оператора GRANT
Параметр Описание

table_name

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

view_name

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

col

Столбец таблицы, к которому должна быть применена привилегия.

proc_name

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

func_name

Имя хранимой функции (или UDF), для которой должна быть выдана привилегия EXECUTE или которой будут даны привилегии.

package_name

Имя пакета, для которого должна быть выдана привилегия EXECUTE или которому будут даны привилегии.

exception_name

Имя исключения, для которого должна быть выдана привилегия USAGE.

generator_name

Имя генератора (последовательности), для которого должна быть выдана привилегия USAGE.

object_type

Тип объекта метаданных.

object_list

Список объектов метаданных, которым будут даны привилегии.

trig_name

Имя триггера, которому будут даны привилегии.

user_list

Список пользователей/ролей, которым будут выданы привилегии.

username

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

rolename

Имя роли.

Unix_group

Имя группы пользователей в операционных системах семейства UNIX.Только в Firebird Embedded.

Unix_user

Имя пользователя в операционной системе семейства UNIX.Только в Firebird Embedded.

sys_privilege

Системная привилегия.

role_granted

Список ролей, которые будут назначены.

role_grantee_list

Список пользователей, которым будут назначены роли.

grantor

Пользователь от имени, которого предоставляются привилегии.

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

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

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

Предложение TO

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

Tip
Рекомендация

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