кодесурса
«MySQL

PostgreSQL: роли базы данных

script1adsense2code
script1adsense3code

Вступление

Роли уровня базы данных являются общими для всей базы данных в их области полномочий. Роль может рассматриваться как пользователь базы данных или группа пользователей базы данных, в зависимости от того, как установлена роль. Роли создаются пользователями (обычно администраторами) и используются для группировки привилегий (привилегия - это право на выполнение определенного типа оператора SQL или право на доступ к объекту другого пользователя.) Или другие роли.

Оглавление

Роли базы данных

Ролевые Атрибуты

Роль Членство

Роли базы данных

PostgreSQL управляет правами доступа к базе данных, используя концепцию ролей. Вы можете создать роль, используя команду SQL CREATE ROLE. CREATE ROLE добавляет новую роль в кластер базы данных PostgreSQL. Вы должны иметь привилегию CREATEROLE или быть суперпользователем базы данных, чтобы использовать эту команду.

Синтаксис:

 Имя СОЗДАТЬ РОЛЬ [[С] опция [...]] 

Параметры:

name : название новой роли.

вариант Описание
SUPERUSER
NOSUPERUSER
Эти параметры определяют, будет ли новая роль «суперпользователем». NOSUPERUSER используется по умолчанию.
CREATEDB
NOCREATEDB
Эти параметры определяют способность роли создавать базы данных. NOCREATEDB является значением по умолчанию.
CREATEROLE
NOCREATEROLE
Эти параметры определяют, будет ли роли разрешено создавать новые роли (то есть выполнять CREATE ROLE). Роль с привилегией CREATEROLE также может изменять и удалять другие роли. Если не указано, NOCREATEROLE является значением по умолчанию.
INHERIT
NOINHERIT
Эти параметры определяют, наследует ли роль привилегии ролей, членом которых она является. Наследовать по умолчанию.
АВТОРИЗОВАТЬСЯ
NOLOGIN
Эти параметры определяют, разрешено ли роли входить в систему; то есть, может ли роль быть указана в качестве начального имени авторизации сеанса во время соединения с клиентом. NOLOGIN используется по умолчанию, за исключением случаев, когда CREATE ROLE вызывается через его альтернативное написание CREATE USER.
REPLICATION
NOREPLICATION
Эти параметры определяют, разрешено ли роли инициировать потоковую репликацию или переводить систему в режим резервного копирования. NOREPLICATION используется по умолчанию.
ПРЕДЕЛ СОЕДИНЕНИЯ Если роль может войти в систему, это указывает, сколько одновременных соединений может установить роль. -1 (по умолчанию) означает отсутствие ограничений.
ПАРОЛЬ пароль Устанавливает пароль роли.
Зашифрованный Не зашифрованный Эти ключевые слова определяют, зашифрован ли пароль в системных каталогах.
ДЕЙСТВИТЕЛЬНО ДО 'timestamp' Предложение VALID UNTIL устанавливает дату и время, после которого пароль роли становится недействительным. Если этот пункт опущен, пароль будет действителен в течение всего времени.
В РОЛИ Предложение IN ROLE перечисляет одну или несколько существующих ролей, к которым новая роль будет немедленно добавлена в качестве нового члена.
В ГРУППЕ роль_имя IN GROUP - это устаревшее написание IN ROLE.
Роль роль В предложении ROLE указана одна или несколько существующих ролей, которые автоматически добавляются в качестве членов новой роли.
ADMIN роль_имя Предложение ADMIN похоже на ROLE, но именованные роли добавляются в новую роль WITH ADMIN OPTION, что дает им право предоставлять членство в этой роли другим.
USER роль_имя Предложение USER является устаревшим написанием предложения ROLE.
SYSID UID Предложение SYSID игнорируется, но принимается для обратной совместимости.

Примеры:

Создайте роль (без пароля), которая может войти в систему:

 СОЗДАТЬ РОЛЬ ДЭВИДА ВХОДА;

Создайте роль с паролем:

 СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ С ПАРОЛЕМ 'ks839 # @ S';

Создайте роль с паролем, который действителен до конца 2014 года. Через одну секунду в 2015 году пароль больше не действителен.

 СОЗДАЙТЕ РОЛЬ ДЭВИДА С ПАРОЛЕМ ВХОДА 'ks839 # @ S' ДЕЙСТВИТЕЛЬНО ДО 2015-01-01 ';

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

 CREATE ROLE admin С CREATEDB CREATEROLE;

Совместимость:

Оператор CREATE ROLE находится в стандарте SQL, но стандарт требует только синтаксиса:

 СОЗДАЙТЕ РОЛЬ ИМЯ [С АДМИНОМ Роль_имя]

Несколько начальных администраторов и все остальные опции CREATE ROLE являются расширениями PostgreSQL.

Изменить роль

Команда ALTER ROLE используется для изменения атрибутов роли PostgreSQL.

Синтаксис:

 ALTER ROLE name [[WITH] опция [...]]
где вариант может быть:
      СУПЕРУЗЕР | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | СОЗДАТЕЛЬ NOCREATEROLE
    | СОЗДАТЕЛЬ | NOCREATEUSER
    | Унаследовать | NOINHERIT
    | ВХОД | NOLOGIN
    | РЕПЛИКАЦИЯ | NOREPLICATION
    | ПРЕДЕЛ СОЕДИНЕНИЯ
    | [Зашифрованы | НЕЗАКРЫТЫЙ] ПАРОЛЬ 'пароль'
    | ДЕЙСТВИТЕЛЬНО ДО 'timestamp'
ALTER ROLE name RENAME TO new_name
Имя ALTER ROLE [IN DATABASE имя_базы_данных] SET_параметр конфигурации {TO | =} {значение | ДЕФОЛТ }
ALTER ROLE {имя | ALL} [IN DATABASE имя_базы_данных] SET параметр_параметра FROM CURRENT
ALTER ROLE {имя | ALL} [IN DATABASE имя_базы_данных] RESET конфигурационный_параметр
ALTER ROLE {имя | ALL} [IN DATABASE имя_базы_данных] RESET ALL

Примеры:

Изменить пароль роли:

 АЛЬТЕР РОЛЬ Давид с паролем 'hu8jmn3';

Удалить пароль роли:

 АЛЬТЕР РОЛЬ Давид с паролем NULL;

Измените дату истечения срока действия пароля, указав, что срок действия пароля должен истечь в полдень 4 мая 2015 года с использованием часового пояса, который на один час опережает UTC:

 ALTER ROLE chris VALID ДО '4 мая 12:00:00 2015 +1'; 

Сделайте пароль действительным навсегда:

 АЛЬТЕР РОЛЬ Фред ДЕЙСТВИТЕЛЬНЫЙ ДО 'Бесконечность';

Дайте роли возможность создавать другие роли и новые базы данных:

 Альтер Роль Мириам CREATEROLE CREATEDB;

Присвойте роли нестандартный параметр параметра maintenance_work_mem:

 ALTER ROLE worker_bee SET maintenance_work_mem = 100000;

Присвойте роли нестандартный, специфичный для базы данных параметр client_min_messages:

 ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;

Совместимость:

Оператор ALTER ROLE является расширением PostgreSQL.

Ролевые Атрибуты

Роль базы данных может иметь ряд атрибутов, которые определяют ее привилегии и взаимодействуют с системой аутентификации клиента.

название Описание
вход в систему

Только роли с атрибутом LOGIN могут использоваться в качестве начального имени роли для подключения к базе данных. Чтобы создать роль с правами входа в систему, используйте:

Синтаксис:

 СОЗДАТЬ РОЛЬ имя ЛОГИН;
Создать имя пользователя;

Примечание. CREATE USER эквивалентно CREATE ROLE, за исключением того, что CREATE USER принимает логин по умолчанию, а CREATE ROLE - нет.

статус суперпользователя Суперпользователь базы данных обходит все проверки разрешений, кроме права на вход. Это опасная привилегия, и ее не следует использовать небрежно; Лучше всего выполнять большую часть своей работы в роли, которая не является суперпользователем.
создание базы данных Роль должна быть явно предоставлена разрешение на создание баз данных (за исключением суперпользователей, поскольку это обходит все проверки разрешений).
создание ролей Для роли должно быть явно предоставлено разрешение на создание большего количества ролей (за исключением суперпользователей, поскольку это обходит все проверки разрешений).
инициирование репликации Роль должна быть явно предоставлена разрешение на инициирование потоковой репликации (за исключением суперпользователей, так как это обходит все проверки разрешений).
пароль Пароль имеет значение только в том случае, если метод аутентификации клиента требует от пользователя ввода пароля при подключении к базе данных.

Атрибуты роли могут быть изменены после создания с помощью ALTER ROLE. См. Справочные страницы для команд CREATE ROLE и ALTER ROLE для получения подробной информации.

Роль также может иметь специфичные для роли значения по умолчанию для многих параметров конфигурации во время выполнения. Например, если по какой-то причине вы хотите отключить сканирование индекса при каждом подключении, вы можете использовать:

 ALTER ROLE myname SET enable_indexscan TO off;

Роль Членство

Часто удобно группировать пользователей, чтобы упростить управление привилегиями: таким образом, привилегии могут быть предоставлены или отменены для группы в целом. В PostgreSQL это достигается созданием роли, представляющей группу, а затем предоставлением членства в роли группы отдельным ролям пользователей.

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

Синтаксис:

 Имя СОЗДАТЬ РОЛЬ;

Обычно роль, используемая в качестве группы, не имеет атрибута LOGIN, хотя вы можете установить ее, если хотите.

Когда роль группы существует, вы можете добавлять и удалять участников, используя команды GRANT и REVOKE:

 GRANT group_role TO role1, ...;
REVOKE group_role FROM role1, ...;

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

Члены групповой роли могут использовать привилегии роли двумя способами. Во-первых, каждый член группы может явно выполнить команду SET ROLE, чтобы временно «стать» групповой ролью. Во-вторых, роли-члены, имеющие атрибут INHERIT, автоматически используют привилегии ролей, членами которых они являются, включая любые привилегии, унаследованные этими ролями. В качестве примера предположим, что мы сделали:

 СОЗДАЙТЕ РОЛЬ ДЭВИДА ВХОДА В НАСЛЕДИЕ;
СОЗДАЙТЕ РОЛЬ admin NOINHERIT;
СОЗДАТЬ РОЛЬ КОЛЕСА NOINHERIT;
ПРЕДОСТАВЛЯТЬ админа ТО Давиду;
Грант колесо для администратора;

Сразу после подключения в качестве роли david сеанс базы данных будет использовать привилегии, предоставленные непосредственно david, а также любые привилегии, предоставленные администратору, потому что joe «наследует» привилегии администратора. Однако привилегии, предоставленные wheel, недоступны, потому что, хотя joe косвенно является членом wheel, членство осуществляется через admin, который имеет атрибут NOINHERIT. После:

 SET ROLE admin;

Чтобы уничтожить групповую роль, используйте DROP ROLE:

 Имя роли DROP;

Любое членство в групповой роли автоматически отменяется (но роли участников не затрагиваются иным образом).

Предыдущая: Последовательность PostgreSQL
Далее: привилегии PostgreSQL

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code