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

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


grant

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
grant [2009/10/29 00:52]
10.1.0.250
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 предоставляет одну или несколько ​привилегий для ​объектов базы данных ​пользователямролям, хранимым процедурам, триггерам и представлениям. 
 + 
 +Авторизованный ​пользователь не имеет никаких привилегий до тех пор, пока какие либо права не будут предоставлены ему явно. При создании объекта ​только его создатель и SYSDBA имеет привилегии ​на него и может назначать привилегии другим пользователям, ролям или ​объектам. 
 + 
 +Для таблиц существуют следующие ​привилегии: 
 +^ Привилегия ^ Описание ^ 
 +|ALL |Объединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES.| 
 +|SELECT |Разрешает ​выборку данных из таблицы или представления.| 
 +|INSERT |Разрешает добавлять ​записи в таблицу или представление.| 
 +|UPDATE |Разрешает изменять записи в таблице или представлении. Можно указать ограничениячтобы можно было изменять ​только ​указанные столбцы.| 
 +|DELETE |Разрешает удалять записи из таблицы или представления.| 
 +|REFERENCES |Привилегия позволяет ​создавать внешний ключ, который использует один или более столбцов этой таблицы,​ как родительский ключ. Вы можете ограничить эту ​привилегию для определенных столбцов.| 
 + 
 +Для выполнения хранимых процедур существует ​отдельная привилегия EXECUTE. Она позволяет выполнять хранимые ​ процедуры и делать выборку данных из процедур выбора (с помощью оператора SELECT). 
 + 
 +В предложении TO указывается список пользователей, ​ролей и объектов базы ​данных (процедур, триггеров и представлений) для которых будут выданы перечисленные привилегии. Необязательные предложения USER и ROLE позволяют уточнить,​ кому именно выдается ​привилегия. Если ключевое слово USER или ROLE не указано, то сервер проверяет, существует ли роль с данным именем,​ если таковой не существует,​ то привилегии назначаются пользователю. Существование ​пользователя, которому выдаются права, не проверяются при выполнении оператора ​ GRANT. Если привилегия выдается ​объекту базы данных,​ то необходимо обязательно указывать тип объекта. 
 + 
 +//​Замечание:​ 
 +Несмотря на то, что ключевые слова USER и ROLE не обязательные,​ желательно использовать их, чтобы избежать путаницы.//
  
-Для доступа ​к таблице или виду, пользователю или объекту требуются SELECT, INSERT, UPDATE ​или DELETE привилегии ​на эту ​таблицу или вид.+В SQL существует специальный пользователь PUBLIC, представляющий всех пользователей. Если какая-то операция разрешена ​пользователю ​PUBLIC, значит, любой аутентифицированный пользователь может выполнить ​эту ​операцию над указанным объектом.
  
-Для вызова сохраненной процедуры ​из приложения, пользователю или объекту требуется EXECUTE привилегия на нее.+//Замечание
 +Если привилегии ​назначены ​пользователю ​PUBLIC, то отозваны они должны ​быть у пользователя ​PUBLIC.//
  
-Пользователи могут дать разрешениепредоставлять привилегии другим ​пользователям, ​обеспечивая <​userlist>, ​который включает WITH GRANT OPTION. Пользователи могут ​предоставлять другим ​только те привилегии которые им, непосредственно, назначены.+Необязательное предложение ​WITH GRANT OPTION ​позволяет пользователям, ​указанным в списке пользователей, передавать другим ​пользователям ​привилегии ​указанные в списке привилегий.
  
-Привилегии могут быть назначены ​всем пользователям определив PUBLIC вместо списка ​имен пользователей. Определение ​PUBLIC предоставляет привилегии ​только пользователям, но не объектам базы данных.+Другое назначение оператора GRANT заключается в назначении ролей для группы  ​перечисленных ​пользователей. В  этом случае после ​предложения GRANT следует список ролей, которые будут назначены списку ​пользователей, указанному после ​предложения TO. 
 +  
 +Необязательное предложение WITH ADMIN OPTION позволяет пользователям,​ указанным в списке ​пользователей, назначать роли из списка ролей, указанных ​в списке ролей, другим пользователям.
  
-Следующая ​таблица суммирует доступные ​привилегии: +При предоставлении прав в базе данных в качестве лица, предоставившего эти права, обычно записывается текущий  ​пользовательИспользуя предложение GRANTED BY можно предоставлять ​права ​от имени другого пользователя. При использовании оператора REVOKE после GRANTED BY права будут удалены только в том случае, если они были зарегистрированы от удаляющего пользователя. Для облегчения миграции из некоторых других реляционных СУБД ​нестандартное предложение AS поддерживается ​как синоним оператора GRANTED BY.
-^ Привилегия ^ Позволяет пользователям... ^ +
-|ALL |Выполнять SELECT, DELETE, INSERT, UPDATE и REFERENCES.| +
-|SELECT |Получать строки из таблицы или вида. | +
-|DELETE |Устранять ​строки из таблицы или вида.| +
-|INSERT |Сохранять новые строки в таблицу или вид. | +
-|UPDATE |Изменять текущие значения в одном или большем количестве столбцов в таблице или виде. Может быть ​ограниченно определенным подмножеством столбцов.| +
-|EXECUTE |Выполнять сохраненные процедуры.| +
-|REFERENCES |Ссылаться на столбцы связи по Foreign Key.|+
  
-Привилегии могут быть удалены ​только пользователемназначившим их, с помощью инструкции 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