Синтаксис команды pgsql-Create_ALTER_GRANT_REVOKE

Синтаксис команды pgsql-Create_ALTER_GRANT_REVOKE

материал

Грамматические условные обозначения

CREATE ROLE

ALTER ROLE

GRANT Авторизация

REVOKE Отзыв Авторизация

Тип разрешения Описание

грамматическая условность

Для описания команд используется следующее соглашение: Квадратные скобки ([ и ]) обозначают необязательные части (в командах Tcl используются вопросительные знаки (?), как и в обычном Tcl). Фигурные скобки ({ и }) и вертикальные полосы (|) означают, что вам необходимо выбрать кандидата. Точка (…) указывает на то, что предшествующий ей элемент может повторяться.
Если это улучшает ясность, командам SQL предшествует приглашение =>, а командам оболочки — приглашение $. Однако подсказка обычно не отображается.


CREATE ROLE Создать роль/пользователя/группу пользователей.

CREATE ROLE добавляет новую роль в кластер базы данных PostgreSQL. Роль — это сущность, которая может владеть объектами базы данных и иметь привилегии базы данных. В зависимости от того, как используется роль, ее можно считать «пользователем», «группой» или и тем, и другим.

CREATE ROLE name [ [ WITH ] option [ ... ] ]
where option可以是:
    SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

параметр

  • name: Имя новой роли.
  • SUPERUSER, NOSUPERUSER:

    Эти условия определяют, является ли новая роль «суперпользователем», который может отменить все ограничения доступа в базе данных. Статус суперпользователя опасен и его следует использовать только в случае крайней необходимости. Чтобы создать нового суперпользователя, вы сами должны быть суперпользователем. Если не указано, по умолчанию используется NOSUPERUSER.
  • CREATEDB, NOCREATEDB

    Эти предложения определяют способность роли создавать базы данных. Если указан CREATEDB, определенным ролям будет разрешено создавать новые базы данных. Указание NOCREATEDB лишит роль возможности создавать базы данных. Если не указано, по умолчанию используется NOCREATEDB.
  • CREATEROLE, NOCREATEROLE

    Эти предложения определяют, разрешено ли роли создавать новые роли (то есть выполнять CREATE ROLE). Роль с привилегией CREATEROLE также может изменять и удалять другие роли. Если не указано, по умолчанию используется NOCREATEROLE.
  • INHERIT, NOINHERIT

    Если новая роль является членом других ролей, эти предложения определяют, «наследует» ли новая роль привилегии этих ролей, а роли, членом которых является новая роль, называются родительскими ролями новой роли. Роль с атрибутом INHERIT может автоматически использовать любые привилегии базы данных, предоставленные ее прямой или косвенной родительской роли. Без INHERIT членство в другой роли предоставит только возможность SET ROLE для этой другой роли, и только после этого будут доступны привилегии другой роли. Если не указано, по умолчанию используется INHERIT.
  • LOGIN, NOLOGIN

    Эти предложения определяют, разрешен ли роли вход в систему, то есть может ли роль быть указана в качестве имени начальной аутентификации сеанса во время клиентского соединения. Роль с атрибутом LOGIN может считаться пользователем. Роль без этого атрибута полезна для управления привилегиями базы данных, но не пользователя в обычном смысле этого слова. Если не указано, по умолчанию используется NOLOGIN, но когда CREATE ROLE вызывается с CREATE USER, по умолчанию будет LOGIN.
  • REPLICATION, NOREPLICATION

    Эти предложения определяют, является ли роль ролью репликации. Роль должна иметь этот атрибут (или быть суперпользователем), чтобы подключаться к серверу в режиме репликации (физической или логической) и создавать или удалять слоты репликации. Роль с атрибутом REPLICATION — это роль с очень высокими привилегиями, и ее следует использовать только для ролей, которые действительно требуют репликации. Если не указано, по умолчанию используется NOREPLICATION. Вы должны быть суперпользователем, чтобы создавать новые роли с атрибутом REPLICATION.
  • BYPASSRLS, NOBYPASSRLS

    Эти предложения определяют, может ли роль обходить каждую политику безопасности на уровне строк (RLS). По умолчанию — NOBYPASSRLS. Вы должны быть суперпользователем, чтобы создавать новые роли с атрибутом BYPASSRLS.
    Обратите внимание, что pg_dump по умолчанию устанавливает для row_security значение OFF, чтобы обеспечить выгрузку всего содержимого таблицы. Если у пользователя, запускающего pg_dump, нет соответствующих привилегий, будет возвращена ошибка. Однако суперпользователи и владельцы дампов таблиц всегда могут обойти RLS.
  • CONNECTION LIMIT connlimit

    Если роль может войти в систему, это указывает, сколько одновременных подключений может установить роль. -1 (по умолчанию) означает неограниченное количество. Обратите внимание, что это ограничение применимо только к обычным соединениям. Это ограничение не распространяется ни на подготовленные транзакции, ни на фоновые рабочие соединения.
    [ ЗАШИФРОВАНО ] ПАРОЛЬ 'пароль'
  • PASSWORD NULL

    устанавливает пароль для роли (пароли полезны только для ролей с атрибутом LOGIN, но вы все равно можете определить пароль для ролей без этого атрибута).

ALTER ROLE Изменение разрешений роли/пользователя/группы пользователей

ALTER ROLE изменяет атрибуты роли PostgreSQL.

ALTER ROLE role_specification [ WITH ] option [ ... ]
其中option可以是:
      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
ALTER ROLE name RENAME TO new_name
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL
其中role_specification可以是:
    role_name
  | CURRENT_ROLE
  | CURRENT_USER
  | SESSION_USER

пример

Чтобы изменить пароль роли:

ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

Чтобы удалить пароль роли:

ALTER ROLE davide WITH PASSWORD NULL;

параметр

  • name: имя роли, атрибуты которой необходимо изменить.
  • CURRENT_ROLE, CURRENT_USER

    изменяют текущего пользователя, а не явно определенную роль.
  • SESSION_USER

    изменяет текущего пользователя сеанса, а не явно определенную роль.
  • new_name

    Новое имя для этой роли.
  • имя_базы_данных

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

ГРАНТ Авторизация

Команда GRANT состоит из двух основных вариантов: один предоставляет доступ к объекту базы данных (таблице, столбцу, представлению, внешней таблице, последовательности, базе данных, оболочке сторонних данных, внешнему серверу, функции, процедуре, процедурному языку, схеме или табличному пространству). , другой предоставляет членство в роли. Эти варианты во многом схожи, но имеют и множество различий, поэтому их необходимо описать отдельно.

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
    [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { { USAGE | SELECT | UPDATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { SEQUENCE sequence_name [, ...]
         | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN domain_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER fdw_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER server_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { { FUNCTION | PROCEDURE | ROUTINE } routine_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
         | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE lang_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
    ON LARGE OBJECT loid [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE tablespace_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]

GRANT role_name [, ...] TO role_specification [, ...]
    [ WITH ADMIN OPTION ]
    [ GRANTED BY role_specification ]
where role_specification can be:
    [ GROUP ] role_name
  | PUBLIC
  | CURRENT_ROLE
  | CURRENT_USER
  | SESSION_USER

ОТМЕНИТЬ Отозвать авторизацию

Команда REVOKE отзывает привилегии, ранее предоставленные одной или нескольким ролям. Набор всех ролей, неявно определяемый ключевым словом PUBLIC.

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
    [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { USAGE | SELECT | UPDATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { SEQUENCE sequence_name [, ...]
         | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN domain_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER fdw_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER server_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON { { FUNCTION | PROCEDURE | ROUTINE } function_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
         | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE lang_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
    ON LARGE OBJECT loid [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE tablespace_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ ADMIN OPTION FOR ]
    role_name [, ...] FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

where role_specification can be:

    [ GROUP ] role_name
  | PUBLIC
  | CURRENT_ROLE
  | CURRENT_USER
  | SESSION_USER

определение разрешения

  • SELECT

    позволяет выполнять SELECT из любого столбца или определенных столбцов, таблиц, представлений, материализованных представлений или других таблоподобных объектов. COPY TO также разрешено. Эта привилегия также необходима для ссылки на существующие значения столбцов в UPDATE или DELETE. Для последовательностей эта привилегия также позволяет использовать функцию currval. Для больших объектов это разрешение позволяет читать объект.

  • INSERT

    позволяет ВСТАВИТЬ новые строки в таблицы, представления и т. д. Может быть предоставлено для определенных столбцов, и в этом случае могут быть назначены только те столбцы, которые указаны в команде INSERT (другие столбцы, таким образом, получат значения по умолчанию). КОПИРОВАТЬ ИЗ также разрешено.

  • UPDATE

    позволяет UPDATE обновлять любой столбец или указывать столбцы, таблицы, представления и т. д. (На самом деле любая допустимая команда UPDATE также требует привилегии SELECT, поскольку она должна обращаться к столбцам таблицы, чтобы определить, какую строку обновлять, и/или вычислять новые значения для столбцов.) SELECT... FOR UPDATE и SELECT... FOR SHARE в дополнение к привилегии SELECT также необходимо это разрешение хотя бы для одного столбца. Для последовательностей это разрешение позволяет использовать функции nextval и setval. Для больших объектов это разрешение позволяет записывать или усекать объект.

  • DELETE

    позволяет DELETE удалять строки из таблиц, представлений и т. д. (На самом деле, любая допустимая команда DELETE также требует привилегии SELECT, поскольку она должна ссылаться на столбцы таблицы, чтобы определить, какие строки удалять.)

  • TRUNCATE

    разрешает TRUNCATE для таблицы.

  • REFERENCES

    позволяет создавать ограничения внешнего ключа, которые ссылаются на таблицу или определенные столбцы таблицы.

  • TRIGGER

    позволяет создавать триггеры для таблиц, представлений и т. д.

  • CREATE

    для баз данных позволяет создавать в базе данных новые схемы и публикации, а также позволяет устанавливать в базу данных доверенные расширения.
    Для схем позволяет создавать в схеме новые объекты. Чтобы переименовать существующий объект, у вас должно быть это разрешение на объект и содержащуюся в нем схему.
    Для табличных пространств разрешено создавать таблицы, индексы и временные файлы в табличном пространстве, а также создавать базу данных с этим табличным пространством в качестве табличного пространства по умолчанию.
    Обратите внимание, что отзыв этой привилегии не меняет существование или расположение существующих объектов.

  • CONNECT

    позволяет грантополучателю подключиться к базе данных. Это разрешение проверяется при запуске соединения (плюс любые ограничения, налагаемые pg_hba.conf).

  • TEMPORARY

    позволяет создавать временные таблицы при использовании базы данных.

  • EXECUTE

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

  • ИСПОЛЬЗОВАНИЕ

    Для процедурного языка позволяет использовать язык для создания функций на этом языке. Это единственный тип разрешений, доступный для процедурных языков.
    Для схем разрешает доступ к объектам, содержащимся в схеме (при условии, что собственные требования разрешений для объектов также удовлетворены). По сути, это позволяет правопреемнику «искать» объект в схеме. Без этого разрешения имена объектов все равно можно просмотреть, например, запросив системные каталоги. Кроме того, после отзыва этого разрешения существующие сеансы также могут иметь операторы, которые ранее выполняли этот поиск, поэтому это не совсем безопасный способ предотвратить доступ к объекту.
    Для последовательностей разрешены функции currval и nextval.
    Для типов и полей тип или поле разрешены при создании таблиц, функций и других объектов схемы. (Обратите внимание, что это разрешение не контролирует полное «использование» типа, например значения типа, которые появляются в запросах. Оно только предотвращает создание объектов, зависящих от типа. Основная цель этого разрешения — чтобы контролировать, какие пользователи могут создавать зависимости от типа, что может помешать владельцу изменить тип позже.)
    Для оболочек сторонних данных разрешите создание новых серверов с использованием оболочек сторонних данных.
    Для внешних серверов позволяет создавать внешние таблицы с использованием сервера. Правопреемники также могут создавать, изменять или удалять свои собственные сопоставления пользователей, связанные с сервером.

Guess you like

Origin blog.csdn.net/xxj_jing/article/details/129264529