В PostgreSQL роль и пользователь являются одним типом объекта. Различие в командах CREATE USER и CREATE ROLE, заключается в том, что в первом случае по умолчанию определяется имя с возможностью соединения (параметр LOGIN). Во втором случае соединение запрещено (параметр NOLOGIN). Группы пользователей, существовавшие в предыдущих версиях, теперь также слились с ролями. Ниже приведен список параметров определяющих роль:
· SUPERUSER, NOSUPERUSER - определяют является ли новая роль суперпользователем - пользователем не имеющего ограничений внутри базы;
· CREATEDB, NOCREATEDB - может ли новая роль создавать базы данных;
· CREATEROLE, NOCREATEROLE - может ли новая роль создавать новые роли;
· LOGIN, NOLOGIN - может ли новая роль использоваться для соединения к БД;
· CONNECTION LIMIT n - если роли доступно соединение к БД, то n указывает предел этих соединений. По умолчанию значение -1, означающее отсутствие предела;
· PASSWORD psw - определяет пароль для соединения;
· ENCRYPTED, UNENCRYPTED - шифровать или нет пароль в системном каталоге;
· VALID UNTIL 'временная отметка' - определяет действие пароля до указанной временной отметки;
· IN ROLE lst - определяет список ролей lst, добавляемых к новой;
· ROLE lst - определяет список ролей, которые станут членами новой группы;
· ADMIN lst - аналогично предыдущему плюс указанные роли сами могут добавлять другие роли в эту группу.
-- создание новой ролиCREATE ROLE rolename WITH SUPERUSER CREATEDB NOLOGIN; -- добавление права ролиGRANT select ON tblname TO rolename; -- добавление роли пользователюGRANT rolename TO username; -- удаляем все права на таблицу-- нельзя уничтожить роль, если она используется-- для доступа к объектуREVOKE ALL PRIVILEGES ON tblname FROM rolename; -- уничтожение ролиDROP ROLE IF EXISTS rolename;