PostgreSQL - ГРАНТ

Опубликовано: 30 Марта, 2022

В PostgreSQL, оператор GRANT используется для привилегий грантовых на роль , чтобы изменить на объекты базы данных , таких как таблицы, представления, функции и т.д.

Ниже показан синтаксис оператора GRANT:

 Синтаксис:
GRANT список_ привилегий | ВСЕ 
ON имя_таблицы
TO имя_роли;

Давайте проанализируем приведенный выше синтаксис:

  • Некоторые элементы привилегированного_списка : SELECT, INSERT, UPDATE, DELETE, TRUNCATE и т. Д. Параметр ALL для предоставления роли всех доступных преимуществ.
  • После ключевого слова ON необходимо указать название таблицы.
  • Следующим шагом будет упоминание имени роли, которой будут предоставлены привилегии.

Пример:

Создайте роль под названием Anshul, которая может входить на сервер базы данных PostgreSQL, как показано ниже:

 создать роль аншул
авторизоваться 
пароль geeks12345;

Теперь создайте таблицу с именем кандидата, как показано ниже:

 создать таблицу Players (
    player_id int всегда генерируется как личность,
    first_name varchar (100) не нуль,
    last_name varchar (100) не нуль,
    email varchar (255) not null уникальный,
    phone varchar (25) не нуль,
    первичный ключ (player_id)
);

Теперь используйте роль Anshul для отдельного входа на сервер базы данных PostgreSQL и попробуйте выбрать данные из таблицы игроков из сеанса Anshul:

 ВЫБРАТЬ * ИЗ игроков;

Здесь PostgreSQL вызовет ошибку, как показано ниже:

 ОШИБКА: игрокам за столом отказано в разрешении

Чтобы предоставить привилегию SELECT в таблице игроков для роли anshul, оператор GRANT может быть выполнен в сеансе postgres , как показано ниже:

 ВЫБОР ГРАНТА 
На игроков
ТО аншул;

Теперь выполните оператор SELECT из сеанса аншула:

 ВЫБРАТЬ * ИЗ игроков;

В-седьмых, выполните следующую инструкцию INSERT;

 ВСТАВИТЬ игроков (first_name, last_name, email, phone)
ЦЕННОСТИ ('raju', 'kumar', 'raju.kumar@geeforgeeks.org', '408-111-2222');

PostgreSQL выдал следующую ошибку, потому что у anshul нет привилегии INSERT для таблицы игроков:

 ОШИБКА: игрокам за столом отказано в разрешении

Теперь предоставьте роли anshul привилегии INSERT , UPDATE и DELETE в таблице кандидатов:

 ПРЕДОСТАВИТЬ ВСТАВКУ, ОБНОВЛЕНИЕ, УДАЛЕНИЕ
На игроков
ТО аншул;

В-девятых, снова выполните оператор INSERT из сеанса аншула:

 ВСТАВИТЬ игроков (first_name, last_name, email, phone)
ЦЕННОСТИ ('raju', 'kumar', 'raju.kumar@gmail.com', '408-111-2222');

Теперь аншул может вставлять данные в таблицу игроков. В дополнение к этому роль Anshul может обновлять или удалять данные из таблицы.

Выход: