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» удален из базы данных.