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

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


grant

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
grant [2014/12/25 07:45]
109.195.129.114 [Описание]
grant [2014/12/27 08:06]
109.195.129.114 [См. также]
Строка 7: Строка 7:
 ===== Формат ===== ===== Формат =====
 <​code>​ <​code>​
-GRANT privileges ON [TABLE] {tablename | viewname} +GRANT 
-  TO {object|userlist ​[WITH GRANT OPTION]|GROUP ​UNIX_group+<privilegesON [TABLE] {tablename | viewname} 
- | EXECUTE ON PROCEDURE procname TO {object ​userlist+TO {   <​object_list>​ 
- | role_granted TO {PUBLIC | role_grantee_list}[WITH ADMIN OPTION];+<​user_list> ​[WITH GRANT OPTION] ​ 
 +| GROUP Unix_group
 +| EXECUTE ON PROCEDURE procname ​ 
 +TO {<​object_list> ​<​user_list>​
 +<role_grantedTO {PUBLIC | <role_grantee_list[WITH ADMIN  
 +OPTION]} 
 +} [{GRANTED BY | AS} [USER] grantor];
  
-<​privileges>​ = ALL [PRIVILEGES] | privilege_list+<​privileges> ​::= ALL [PRIVILEGES] | <privilege_list>
  
-<​privilege_list>​ = {+<​privilege_list> ​::= {
 SELECT SELECT
 | DELETE | DELETE
 | INSERT | INSERT
-| UPDATE [(col [, col …])] +| UPDATE [(col [,col …])] 
-| REFERENCES [(col [, col …])] +| REFERENCES [(col [,col …])] 
-}[, privilege_list …]+} [, <privilege_list…]
  
-<object> = {+<object_list::= {
 PROCEDURE procname PROCEDURE procname
 | TRIGGER trigname | TRIGGER trigname
 | VIEW viewname | VIEW viewname
 | PUBLIC | PUBLIC
-}[, object ​…]+} [, <​object_list> ​…]
  
-<userlist> = {+<user_list::= {
 [USER] username [USER] username
-| rolename +[ROLE] ​rolename 
-UNIX_user +Unix_user 
-}[,userlist ​…]+} [, <​user_list> ​…]
  
-<​role_granted>​ = rolename [, rolename …]+<​role_granted> ​::= rolename [, rolename …]
  
-<​role_grantee_list>​ = [USER] username [, [USER] username …]+<​role_grantee_list> ​::= [USER] username [, [USER] username ​ …]
 </​code>​ </​code>​
-^ Аргумент ^ Описание ^ 
-|col |Столбцы,​ к которым предоставленные привилегии применяются. | 
-|tablename |Имя существующей таблицы,​ к которой предоставленные привилегии применяются. | 
-|viewname |Имя существующего вида, к которому предоставленные привилегии применяются. | 
-|<​object>​ |Имя пользователя или существующего объекта базы данных,​ которым привилегии будут предоставлены. | 
-|<​userlist>​ |Список пользователей,​ которым привилегии будут предоставлены. | 
-|WITH GRANT OPTION |Передает GRANT полномочие для привилегий,​ перечисленных в инструкции GRANT, пользователям,​ перечисленным в <​urerlist>​.| 
  
 +^ Аргумент ^ Описание ^
 +|tablename |Имя таблицы,​ к которой должно быть применена привилегия.|
 +|viewname |Имя представления,​ к которому должно быть применена привилегия.|
 +|procname |Имя хранимой процедуры,​ для которой должна быть выдана привилегия EXECUTE или которой будут даны привилегии.|
 +|col |Столбец таблицы,​ к которому должна быть применена привилегия.|
 +|Unix_group|Имя группы пользователей в операционных системах семейства UNIX.|
 +|username |Имя пользователя,​ для которого выдаются привилегии или которому назначается роль.|
 +|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>​
Строка 81: Строка 108:
  
 ===== См. также ===== ===== См. также =====
-[[CREATE ROLE]],  [[DROP ROLE]], ​ [[REVOKE]]+[[REVOKE]], [[CREATE ​ROLE]], [[DROP ROLE]]
  
grant.txt · Последние изменения: 2014/12/27 08:06 — 109.195.129.114