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

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

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

  • SELECT,
  • INSERT,
  • UPDATE,
  • DELETE,
  • TRUNCATE,
  • REFERENCES,
  • TRIGGER,
  • CREATE,
  • CONNECT,
  • TEMPORARY,
  • ВЫПОЛНИТЬ и
  • USAGE

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

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

Базовый синтаксис команды GRANT следующий:

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

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

  • PUBLIC - Краткая форма, представляющая всех пользователей.

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

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

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

Синтаксис REVOKE

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

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

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

  • PUBLIC - Краткая форма, представляющая всех пользователей.

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

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

пример

Чтобы понять привилегии, давайте сначала создадим ПОЛЬЗОВАТЕЛЯ следующим образом:

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

Сообщение СОЗДАТЬ РОЛЬ указывает на создание ПОЛЬЗОВАТЕЛЯ "manisha".

Рассмотрим таблицу КОМПАНИЯ, имеющую следующие записи:

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 указывает, что все привилегии назначены ПОЛЬЗОВАТЕЛЮ.

Затем давайте отзовем привилегии от ПОЛЬЗОВАТЕЛЯ "manisha" следующим образом:

testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

Сообщение REVOKE указывает, что все привилегии отозваны у ПОЛЬЗОВАТЕЛЯ.

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

testdb=# DROP USER manisha;
DROP ROLE

Сообщение DROP ROLE указывает на то, что ПОЛЬЗОВАТЕЛЬ «Manisha» удален из базы данных.