Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
grant [2014/12/25 07:55] 109.195.129.114 [Формат] |
grant [2014/12/27 08:06] (текущий) 109.195.129.114 [См. также] |
||
---|---|---|---|
Строка 45: | Строка 45: | ||
<role_grantee_list> ::= [USER] username [, [USER] username …] | <role_grantee_list> ::= [USER] username [, [USER] username …] | ||
</code> | </code> | ||
+ | |||
^ Аргумент ^ Описание ^ | ^ Аргумент ^ Описание ^ | ||
- | |col |Столбцы, к которым предоставленные привилегии применяются. | | + | |tablename |Имя таблицы, к которой должно быть применена привилегия.| |
- | |tablename |Имя существующей таблицы, к которой предоставленные привилегии применяются. | | + | |viewname |Имя представления, к которому должно быть применена привилегия.| |
- | |viewname |Имя существующего вида, к которому предоставленные привилегии применяются. | | + | |
|procname |Имя хранимой процедуры, для которой должна быть выдана привилегия EXECUTE или которой будут даны привилегии.| | |procname |Имя хранимой процедуры, для которой должна быть выдана привилегия EXECUTE или которой будут даны привилегии.| | ||
- | |<object> |Имя пользователя или существующего объекта базы данных, которым привилегии будут предоставлены. | | + | |col |Столбец таблицы, к которому должна быть применена привилегия.| |
- | |Unix_group |Имя группы пользователей в операционных системах семейства UNIX. | | + | |Unix_group|Имя группы пользователей в операционных системах семейства UNIX.| |
- | |<userlist> |Список пользователей, которым привилегии будут предоставлены. | | + | |username |Имя пользователя, для которого выдаются привилегии или которому назначается роль.| |
- | |WITH GRANT OPTION |Передает GRANT полномочие для привилегий, перечисленных в инструкции GRANT, пользователям, перечисленным в <urerlist>.| | + | |rolename |Имя роли.| |
+ | |trigname |Имя триггера.| | ||
+ | |grantor |Пользователь от имени, которого предоставляются привилегии.| | ||
===== Описание ===== | ===== Описание ===== | ||
- | GRANT устанавливает привилегии на объекты базы данных, для пользователей или других объектов базы данных. Когда объект впервые создан, только его создатель имеет привилегии на него, и только создатель может предоставить (GRANT) привилегии на него другим пользователям или объектам. | + | Оператор GRANT предоставляет одну или несколько привилегий для объектов базы данных пользователям, ролям, хранимым процедурам, триггерам и представлениям. |
- | Для доступа к таблице или виду, пользователю или объекту требуются SELECT, INSERT, UPDATE или DELETE привилегии на эту таблицу или вид. | + | Авторизованный пользователь не имеет никаких привилегий до тех пор, пока какие либо права не будут предоставлены ему явно. При создании объекта только его создатель и SYSDBA имеет привилегии на него и может назначать привилегии другим пользователям, ролям или объектам. |
- | Для вызова сохраненной процедуры из приложения, пользователю или объекту требуется EXECUTE привилегия на нее. | + | Для таблиц существуют следующие привилегии: |
+ | ^ Привилегия ^ Описание ^ | ||
+ | |ALL |Объединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES.| | ||
+ | |SELECT |Разрешает выборку данных из таблицы или представления.| | ||
+ | |INSERT |Разрешает добавлять записи в таблицу или представление.| | ||
+ | |UPDATE |Разрешает изменять записи в таблице или представлении. Можно указать ограничения, чтобы можно было изменять только указанные столбцы.| | ||
+ | |DELETE |Разрешает удалять записи из таблицы или представления.| | ||
+ | |REFERENCES |Привилегия позволяет создавать внешний ключ, который использует один или более столбцов этой таблицы, как родительский ключ. Вы можете ограничить эту привилегию для определенных столбцов.| | ||
- | Пользователи могут дать разрешение, предоставлять привилегии другим пользователям, обеспечивая <userlist>, который включает WITH GRANT OPTION. Пользователи могут предоставлять другим только те привилегии которые им, непосредственно, назначены. | + | Для выполнения хранимых процедур существует отдельная привилегия EXECUTE. Она позволяет выполнять хранимые процедуры и делать выборку данных из процедур выбора (с помощью оператора SELECT). |
- | Привилегии могут быть назначены всем пользователям определив PUBLIC вместо списка имен пользователей. Определение PUBLIC предоставляет привилегии только пользователям, но не объектам базы данных. | + | В предложении TO указывается список пользователей, ролей и объектов базы данных (процедур, триггеров и представлений) для которых будут выданы перечисленные привилегии. Необязательные предложения USER и ROLE позволяют уточнить, кому именно выдается привилегия. Если ключевое слово USER или ROLE не указано, то сервер проверяет, существует ли роль с данным именем, если таковой не существует, то привилегии назначаются пользователю. Существование пользователя, которому выдаются права, не проверяются при выполнении оператора GRANT. Если привилегия выдается объекту базы данных, то необходимо обязательно указывать тип объекта. |
- | Следующая таблица суммирует доступные привилегии: | + | //Замечание: |
- | ^ Привилегия ^ Позволяет пользователям... ^ | + | Несмотря на то, что ключевые слова USER и ROLE не обязательные, желательно использовать их, чтобы избежать путаницы.// |
- | |ALL |Выполнять SELECT, DELETE, INSERT, UPDATE и REFERENCES.| | + | |
- | |SELECT |Получать строки из таблицы или вида. | | + | В SQL существует специальный пользователь PUBLIC, представляющий всех пользователей. Если какая-то операция разрешена пользователю PUBLIC, значит, любой аутентифицированный пользователь может выполнить эту операцию над указанным объектом. |
- | |DELETE |Устранять строки из таблицы или вида.| | + | |
- | |INSERT |Сохранять новые строки в таблицу или вид. | | + | //Замечание: |
- | |UPDATE |Изменять текущие значения в одном или большем количестве столбцов в таблице или виде. Может быть ограниченно определенным подмножеством столбцов.| | + | Если привилегии назначены пользователю PUBLIC, то отозваны они должны быть у пользователя PUBLIC.// |
- | |EXECUTE |Выполнять сохраненные процедуры.| | + | |
- | |REFERENCES |Привилегия позволяет создавать внешний ключ, который использует один или более столбцов этой таблицы, как родительский ключ. Вы можете ограничить эту привилегию для определенных столбцов.| | + | Необязательное предложение WITH GRANT OPTION позволяет пользователям, указанным в списке пользователей, передавать другим пользователям привилегии указанные в списке привилегий. |
+ | |||
+ | Другое назначение оператора GRANT заключается в назначении ролей для группы перечисленных пользователей. В этом случае после предложения GRANT следует список ролей, которые будут назначены списку пользователей, указанному после предложения TO. | ||
+ | |||
+ | Необязательное предложение WITH ADMIN OPTION позволяет пользователям, указанным в списке пользователей, назначать роли из списка ролей, указанных в списке ролей, другим пользователям. | ||
+ | |||
+ | При предоставлении прав в базе данных в качестве лица, предоставившего эти права, обычно записывается текущий пользователь. Используя предложение GRANTED BY можно предоставлять права от имени другого пользователя. При использовании оператора REVOKE после GRANTED BY права будут удалены только в том случае, если они были зарегистрированы от удаляющего пользователя. Для облегчения миграции из некоторых других реляционных СУБД нестандартное предложение AS поддерживается как синоним оператора GRANTED BY. | ||
- | Привилегии могут быть удалены только пользователем, назначившим их, с помощью инструкции REVOKE. Если ALL привилегии назначены, тогда ALL привилегии должны быть отменены. Если привилегии предоставлены как PUBLIC, они могут быть удалены только для PUBLIC. | + | Предложение GRANTED BY может использовать: |
+ | * Владелец базы данных; | ||
+ | * SYSDBA; | ||
+ | * Любой пользователь, имеющий права на роль RDB$ADMIN и указавший ее при соединении с базой данных; | ||
+ | * При использовании флага AUTO ADMIN MAPPING - любой администратор операционной системы Windows (при условии использования сервером доверенной авторизации - trusted authentication), даже без указания роли. | ||
+ | Даже владелец роли не может использовать GRANTED BY, если он не находится в вышеупомянутом списке. | ||
===== Пример ===== | ===== Пример ===== | ||
<code> | <code> | ||
Строка 89: | Строка 108: | ||
===== См. также ===== | ===== См. также ===== | ||
- | [[CREATE ROLE]], [[DROP ROLE]], [[REVOKE]] | + | [[REVOKE]], [[CREATE ROLE]], [[DROP ROLE]] |