кодесурса
«MySQL

PostgreSQL: привилегии

script1adsense2code
script1adsense3code

Вступление

Когда объект создан, он назначается владельцем. Обычно владелец имеет право выполнять определенные операторы. Для большинства типов объектов начальное состояние таково, что только владелец (или суперпользователь) может что-либо делать с объектом. Чтобы другие роли могли его использовать, необходимо предоставить привилегии. Привилегия - это право на выполнение определенного типа оператора SQL или на доступ к объекту другого пользователя. Некоторые примеры привилегий включают право на:

  • Подключиться к базе данных
  • Создать базу данных или таблицу
  • Изменить стол
  • Выбрать строки из таблицы другого пользователя
  • Выполнить хранимую процедуру другого пользователя

Версия PostgreSQL: 9.4

Оглавление

Типы привилегий

Грант

отзывать

Типы привилегий

Существуют различные виды привилегий: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE и USAGE. Привилегии, применимые к конкретному объекту, различаются в зависимости от типа объекта (таблица, функция и т. Д.). Вот подробности:

название Описание
ВЫБРАТЬ Позволяет выбрать из любого столбца или определенных перечисленных столбцов указанной таблицы, представления или последовательности, используя COPY TO.
ВСТАВИТЬ Позволяет вставлять новую строку в указанную таблицу. Также позволяет COPY FROM.
ОБНОВИТЬ Разрешает ОБНОВЛЕНИЕ любого столбца или определенных перечисленных столбцов. Для больших объектов эта привилегия позволяет писать или усекать объект.
УДАЛЯТЬ Позволяет УДАЛИТЬ строки из указанной таблицы.
TRUNCATE Позволяет TRUNCATE для указанной таблицы.
РЕКОМЕНДАЦИИ Эта привилегия может быть предоставлена для всех столбцов таблицы или только для определенных столбцов.
СПУСКОВОЙ КРЮЧОК Позволяет создать триггер для указанной таблицы.
СОЗДАЙТЕ Базы данных: позволяет создавать новые схемы в базе данных.
Схемы: позволяет создавать новые объекты в схеме. Чтобы переименовать существующий объект, вы должны владеть объектом и иметь эту привилегию для содержащей схемы.
Табличные пространства: Позволяет создавать таблицы, индексы и временные файлы в табличном пространстве и позволяет создавать базы данных, которые имеют табличное пространство в качестве табличного пространства по умолчанию.
CONNECT Позволяет пользователю подключаться к указанной базе данных. Эта привилегия проверяется при запуске соединения (в дополнение к проверке любых ограничений, налагаемых pg_hba.conf).
ВРЕМЕННЫЙ ТЕМП Позволяет создавать временные таблицы при использовании указанной базы данных.
ВЫПОЛНИТЬ Позволяет использовать указанную функцию и использовать любые операторы, которые реализованы поверх функции. Это единственный тип привилегий, применимый к функциям.
ИСПОЛЬЗОВАНИЕ Процедурные языки: Позволяет использовать указанный язык для создания функций на этом языке. Это единственный тип привилегий, применимый к процедурным языкам.
Схемы:, разрешает доступ к объектам, содержащимся в указанной схеме (при условии, что собственные требования к привилегиям объектов также выполнены).
Последовательности: Эта привилегия позволяет использовать функции currval и nextval.
Типы и домены: эта привилегия позволяет использовать тип или домен при создании таблиц, функций и других объектов схемы.
Серверы: эта привилегия позволяет получателю создавать внешние таблицы с использованием сервера, а также создавать, изменять или удалять сопоставления пользователей своего пользователя, связанные с этим сервером.
ВСЕ ПРИВИЛЕГИИ Предоставьте все доступные привилегии одновременно.

Грант

Оператор GRANT определяет права доступа. Этот оператор используется для предоставления привилегий объекту базы данных (таблица, столбец, представление, сторонняя таблица, последовательность, база данных, оболочка сторонних данных, сторонний сервер, функция, процедурный язык, схема или табличное пространство) и объекту, который предоставляет членство в роль. Этот вариант команды GRANT предоставляет членство в роли одной или нескольким другим ролям. Членство в роли имеет большое значение, поскольку оно передает привилегии, предоставленные роли каждому из ее членов. Смотрите следующий Синопсис:

Грант ПО Синтаксис
имя_таблицы, имя_схемы
 GRANT {{SELECT | ВСТАВИТЬ | ОБНОВЛЕНИЕ | УДАЛИТЬ | TRUNCATE | ССЫЛКИ | СПУСКОВОЙ КРЮЧОК }
    [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    ON {[TABLE] table_name [, ...]
         | ВСЕ ТАБЛИЦЫ В СХЕМЕ имя_схемы schema [, ...]}
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
имя столбца, имя таблицы
 GRANT {{SELECT | ВСТАВИТЬ | ОБНОВЛЕНИЕ | ССЫЛКИ} (имя_столбца [, ...])
    [, ...] | ВСЕ [ПРИВИЛЕГИИ] (имя_столбца [, ...])}
    ON [TABLE] table_name [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
имя_последовательности, имя_схемы
 GRANT {{ИСПОЛЬЗОВАНИЕ | ВЫБРАТЬ | ОБНОВИТЬ }
    [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    ON {SEQUENCE sequence_name [, ...]
         | ВСЕ ПОСЛЕДОВАТЕЛЬНОСТИ В СХЕМЕ schema_name [, ...]}
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
database_name
 GRANT {{CREATE | СОЕДИНИТЬ | ВРЕМЕННЫЙ | TEMP} [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    ON DATABASE имя_базы_данных [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
доменное имя
 GRANT {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    ON DOMAIN имя_домена [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
fdw_name
 GRANT {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    НА ИНОСТРАННЫХ ПАРАМЕТРАХ ДАННЫХ fdw_name [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
название сервера
 GRANT {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    ON FOREIGN SERVER имя_сервера [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
имя-функции, имя-аргумента, тип-аргумента, имя-схемы
 GRANT {EXECUTE | ВСЕ [ПРИВИЛЕГИИ]}
    ON {FUNCTION имя_функции ([[argmode] [arg_name] arg_type [, ...]]) [, ...]
         | ВСЕ ФУНКЦИИ В СХЕМЕ schema_name [, ...]}
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
lang_name
 GRANT {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    НА ЯЗЫКЕ lang_name [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
Лойд
 GRANT {{SELECT | ОБНОВЛЕНИЕ} [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    НА БОЛЬШОМ ОБЪЕКТЕ loid [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
schema_name
 GRANT {{CREATE | ИСПОЛЬЗОВАНИЕ} [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    НА СХЕМЕ имя_схемы [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
tablespace_name
 GRANT {СОЗДАТЬ | ВСЕ [ПРИВИЛЕГИИ]}
    ON TABLESPACE tablespace_name [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
type_name
 GRANT {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    ON TYPE type_name [, ...]
    TO {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [С ГРАНТОВЫМ ВАРИАНТОМ] 
role_name
 GRANT имя_ роли [, ...] TO имя_ роли [, ...] [С ДОБАВЛЕНИЕМ ВАРИАНТА] 

отзывать

Команда REVOKE используется для отзыва ранее предоставленных привилегий от одной или нескольких ролей. Смотрите следующий Синопсис:

Отменить ON Синтаксис
table_name, schema_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {{SELECT | ВСТАВИТЬ | ОБНОВЛЕНИЕ | УДАЛИТЬ | TRUNCATE | ССЫЛКИ | СПУСКОВОЙ КРЮЧОК }
    [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    ON {[TABLE] table_name [, ...]
         | ВСЕ ТАБЛИЦЫ В СХЕМЕ имя_схемы schema [, ...]}
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
имя столбца, имя столбца,
table_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {{SELECT | ВСТАВИТЬ | ОБНОВЛЕНИЕ | ССЫЛКИ} (имя_столбца [, ...])
    [, ...] | ВСЕ [ПРИВИЛЕГИИ] (имя_столбца [, ...])}
    ON [TABLE] table_name [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
sequence_name, schema_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {{ИСПОЛЬЗОВАНИЕ | ВЫБРАТЬ | ОБНОВИТЬ }
    [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    ON {SEQUENCE sequence_name [, ...]
         | ВСЕ ПОСЛЕДОВАТЕЛЬНОСТИ В СХЕМЕ schema_name [, ...]}
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
database_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {{СОЗДАТЬ | СОЕДИНИТЬ | ВРЕМЕННЫЙ | TEMP} [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    ON DATABASE имя_базы_данных [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ]
	
доменное имя
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    ON DOMAIN имя_домена [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ]
fdw_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    НА ИНОСТРАННЫХ ПАРАМЕТРАХ ДАННЫХ fdw_name [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ]
название сервера
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    ON FOREIGN SERVER имя_сервера [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 

имя_функции, имя_агг,
arg_type, schema_name

 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {ВЫПОЛНИТЬ | ВСЕ [ПРИВИЛЕГИИ]}
    ON {FUNCTION имя_функции ([[argmode] [arg_name] arg_type 
[, ...]]) [, ...] | ВСЕ ФУНКЦИИ В СХЕМЕ schema_name [, ...]} FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...] [КАСКАД | ОГРАНИЧЕНИЕ]
lang_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    НА ЯЗЫКЕ lang_name [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
Лойд
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {{SELECT | ОБНОВЛЕНИЕ} [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    НА БОЛЬШОМ ОБЪЕКТЕ loid [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
schema_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {{СОЗДАТЬ | ИСПОЛЬЗОВАНИЕ} [, ...] | ВСЕ [ПРИВИЛЕГИИ]}
    НА СХЕМЕ имя_схемы [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
tablespace_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {СОЗДАТЬ | ВСЕ [ПРИВИЛЕГИИ]}
    ON TABLESPACE tablespace_name [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
type_name
 ОТМЕНИТЬ [ВАРИАНТ ГРАНТА ДЛЯ]
    {ИСПОЛЬЗОВАНИЕ | ВСЕ [ПРИВИЛЕГИИ]}
    ON TYPE type_name [, ...]
    FROM {[GROUP] role_name | ОБЩЕСТВЕННЫЙ} [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 
role_name
 ОТМЕНИТЬ [ДОБАВИТЬ ВАРИАНТ ДЛЯ]
    role_name [, ...] FROM role_name [, ...]
    [КАСКАД | ОГРАНИЧЕНИЕ] 

Примеры:

Отмените право вставки для публики на настольные фильмы:

 ОТМЕНИТЬ ВСТАВКУ НА КИНО ИЗ ОБЩЕСТВЕННОСТИ;

Отменить все привилегии (означает «отозвать все привилегии, которые я предоставил».) От пользователя document1 на видах вида:

 ОТЗЫВАТЬ ВСЕ ПРИВИЛЕГИИ по видам ИЗ document1;

Отмените членство в роли администратора от пользователя kapil:

 ОТМЕНИТЬ админов из капил;

Предыдущая: Роли в базе данных PostgreSQL
Далее: Резервное копирование и восстановление PostgreSQL

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code