Учебники

PostgreSQL — ПРИВИЛЕГИИ

Всякий раз, когда объект создается в базе данных, ему назначается владелец. Обычно владельцем является тот, кто выполнил оператор создания. Для большинства типов объектов начальное состояние таково, что только владелец (или суперпользователь) может изменить или удалить объект. Чтобы позволить другим ролям или пользователям использовать его, должны быть предоставлены привилегии или разрешение.

Различные виды привилегий в PostgreSQL —

  • ВЫБРАТЬ,
  • ВСТАВИТЬ,
  • ОБНОВИТЬ,
  • УДАЛЯТЬ,
  • TRUNCATE,
  • РЕКОМЕНДАЦИИ,
  • СПУСКОВОЙ КРЮЧОК,
  • СОЗДАЙТЕ,
  • CONNECT,
  • ВРЕМЕННОЕ,
  • ВЫПОЛНИТЬ, и
  • ИСПОЛЬЗОВАНИЕ

В зависимости от типа объекта (таблицы, функции и т. Д.) К объекту применяются привилегии. Чтобы назначить привилегии пользователям, используется команда GRANT.

Синтаксис для GRANT

Основной синтаксис для команды GRANT выглядит следующим образом:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • значениями привилегий могут быть: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object — имя объекта, к которому предоставляется доступ. Возможные объекты: таблица, представление, последовательность

  • ПУБЛИЧНЫЙ — краткая форма, представляющая всех пользователей.

  • ГРУППА ГРУППА — группа, которой нужно предоставить привилегии.

  • username — имя пользователя, которому необходимо предоставить привилегии. PUBLIC — это краткая форма, представляющая всех пользователей.

значениями привилегий могут быть: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

object — имя объекта, к которому предоставляется доступ. Возможные объекты: таблица, представление, последовательность

ПУБЛИЧНЫЙ — краткая форма, представляющая всех пользователей.

ГРУППА ГРУППА — группа, которой нужно предоставить привилегии.

username — имя пользователя, которому необходимо предоставить привилегии. PUBLIC — это краткая форма, представляющая всех пользователей.

Привилегии могут быть отменены с помощью команды REVOKE.

Синтаксис для REVOKE

Основной синтаксис команды REVOKE следующий:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • значениями привилегий могут быть: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object — имя объекта, к которому предоставляется доступ. Возможные объекты: таблица, представление, последовательность

  • ПУБЛИЧНЫЙ — краткая форма, представляющая всех пользователей.

  • ГРУППА ГРУППА — группа, которой нужно предоставить привилегии.

  • username — имя пользователя, которому необходимо предоставить привилегии. PUBLIC — это краткая форма, представляющая всех пользователей.

значениями привилегий могут быть: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

object — имя объекта, к которому предоставляется доступ. Возможные объекты: таблица, представление, последовательность

ПУБЛИЧНЫЙ — краткая форма, представляющая всех пользователей.

ГРУППА ГРУППА — группа, которой нужно предоставить привилегии.

username — имя пользователя, которому необходимо предоставить привилегии. PUBLIC — это краткая форма, представляющая всех пользователей.

пример

Чтобы понять привилегии, давайте сначала создадим пользователя USER следующим образом:

testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE

Сообщение CREATE ROLE указывает, что пользователь «manisha» создан.

Рассмотрим таблицу COMPANY, имеющую записи следующим образом:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Далее, давайте предоставим все привилегии на таблицу COMPANY пользователю «manisha» следующим образом —

testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT

Сообщение GRANT указывает, что все привилегии назначены пользователю.

Далее, давайте отзовем привилегии у USER «маниша» следующим образом —

testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

Сообщение REVOKE указывает, что все привилегии отозваны у пользователя.

Вы даже можете удалить пользователя следующим образом —

testdb=# DROP USER manisha;
DROP ROLE

Сообщение DROP ROLE указывает, что пользователь ‘Manisha’ удален из базы данных.