×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.76. CREATE ROLE

6.1.76. CREATE ROLE

CREATE ROLE — создание новой роли базы данных

Синтаксис

CREATE ROLE name [ [ WITH ] option [ ... ] ]

где option может принимать следующие значения:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT лимит_подключений
    | [ ENCRYPTED ] PASSWORD 'пароль' | PASSWORD NULL
    | VALID UNTIL 'метка_времени'
    | IN ROLE role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | SYSID uid

Описание

CREATE ROLE добавляет новую роль в Digital Q.DataBase кластер баз данных. Роль — это сущность, которая может владеть объектами базы данных и иметь привилегии базы данных; роль можно рассматривать как «пользователя», как «группу», или и то, и другое в зависимости от способа её использования. Обратитесь к Глава 3.6 и Глава 3.5 за информацией об управлении пользователями и аутентификации. Для использования этой команды необходимо иметь CREATEROLE привилегию или быть суперпользователем базы данных.

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

При создании роли можно сразу включить новую роль в состав существующей роли, а также назначить существующие роли членами новой роли. Правила включения исходных параметров членства в ролях описаны ниже в IN ROLE, ROLE, и ADMIN предложения. GRANT команда обеспечивает детальное управление параметрами при создании членства, а также возможность изменения этих параметров после создания новой роли.

Параметры

name

Имя новой роли.

SUPERUSER
NOSUPERUSER

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

CREATEDB
NOCREATEDB

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

CREATEROLE
NOCREATEROLE

Эти параметры определяют, будет ли роли разрешено создавать, изменять, удалять, комментировать и изменять метку безопасности для других ролей. См. создание ролей для получения подробных сведений о том, какие возможности предоставляет эта привилегия. Если не указано, NOCREATEROLE используется по умолчанию.

INHERIT
NOINHERIT

Это влияет на статус наследования членства, когда эта роль добавляется в качестве члена другой роли, как в текущей, так и в последующих командах. В частности, это управляет статусом наследования членств, добавленных этой командой с использованием IN ROLE предложения, а также в последующих командах с использованием предложения ROLE . Это значение также используется в качестве статуса наследования по умолчанию при добавлении этой роли в качестве участника с помощью GRANT команды. Если параметр не указан, INHERIT используется по умолчанию.

В Digital Q.DataBase версиях до 16, наследование было атрибутом уровня роли, который управлял всеми проверками членства во время выполнения для этой роли.

LOGIN
NOLOGIN

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

REPLICATION
NOREPLICATION

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

BYPASSRLS
NOBYPASSRLS

Данные параметры определяют, будет ли роль игнорировать все политики защиты на уровне строк (RLS). NOBYPASSRLS используется по умолчанию. Только суперпользователи или роли с правом BYPASSRLS могут указывать BYPASSRLS.

Учтите, что pg_dump устанавливает row_security в значение OFF по умолчанию, чтобы гарантировать выгрузку всего содержимого таблицы. Если у пользователя, запускающего pg_dump, нет необходимых прав доступа, будет выдана ошибка. Тем не менее, суперпользователи и владелец выгружаемой таблицы всегда обходят политики RLS.

CONNECTION LIMIT лимит_подключений

Если роль может подключаться к базе данных, этот параметр определяет количество одновременных соединений, которые разрешено устанавливать данной роли. -1 (значение по умолчанию) означает отсутствие ограничения. Обратите внимание, что только обычные соединения учитываются в этом ограничении. Ни подготовленные транзакции, ни соединения фоновых рабочих процессов не учитываются в этом ограничении.

[ ENCRYPTED ] PASSWORD 'пароль'
PASSWORD NULL

Устанавливает пароль роли. (Пароль имеет смысл только для ролей, имеющих атрибут LOGIN , но вы тем не менее можете определить его для ролей без него.) Если вы не планируете использовать аутентификацию по паролю, этот параметр можно опустить. Если пароль не задан, ему будет присвоено пустое значение (null), и аутентификация по паролю для такого пользователя всегда будет завершаться неудачей. Пустой пароль может быть по желанию явно указан как PASSWORD NULL.

Примечание

Указание пустой строки также установит пароль в значение null, хотя до версии 10 Digital Q.DataBase это было не так. В более ранних версиях пустая строка могла как использоваться, так и нет, в зависимости от метода аутентификации и конкретной версии, при этом библиотека libpq в любом случае отказывалась её использовать. Во избежание двусмысленности следует избегать указания пустой строки.

Пароль всегда хранится в системных каталогах в зашифрованном виде. Данное ключевое ENCRYPTED слово не имеет эффекта, но принимается для обратной совместимости. Метод шифрования определяется параметром конфигурации password_encryption. Если предоставленная строка пароля уже зашифрована по алгоритму MD5 или SCRAM, она сохраняется в исходном виде независимо от password_encryption (так как система не может расшифровать указанную зашифрованную строку пароля для её перешифрования в другой формат). Это позволяет выполнять повторную загрузку зашифрованных паролей во время выгрузки/восстановления.

VALID UNTIL 'метка_времени'

Данное VALID UNTIL предложение устанавливает дату и время, после которых пароль роли перестает быть действительным. Если это предложение опущено, пароль будет действителен неограниченное время.

IN ROLE role_name

Данное IN ROLE предложение приводит к тому, что новая роль автоматически добавляется в качестве члена указанных существующих ролей. Для нового членства будет SET включена, а параметр ADMIN отключен. Данное INHERIT параметр будет включен, если не указан параметр NOINHERIT option is specified.

ROLE role_name

Данное ROLE предложение приводит к тому, что одна или несколько указанных существующих ролей автоматически добавляются в качестве членов с SET включенным параметром. Это фактически делает новую роль «группу». Роли, указанные в данном предложении, с атрибутом уровня INHERIT роли будут иметь предложения INHERIT параметр, включенный в новом членстве. Новые членства будут иметь ADMIN отключен.

ADMIN role_name

Данное ADMIN предложение имеет тот же эффект, что и ROLE, но указанные роли добавляются в качестве участников новой роли с ADMIN включенным параметром, что дает им право предоставлять членство в новой роли другим субъектам.

SYSID uid

Данное SYSID предложение игнорируется, но принимается для обеспечения обратной совместимости.

Примечания

Используйте ALTER ROLE для изменения атрибутов роли, и DROP ROLE для удаления роли. Все атрибуты, указанные в CREATE ROLE могут быть изменены в дальнейшем ALTER ROLE командами.

Рекомендуемым способом добавления и удаления членов ролей, используемых в качестве групп, является использование GRANT и REVOKE.

Предложение VALID UNTIL определяет срок действия только для пароля, а не для самой роли. В частности, ограничение по сроку действия не применяется при входе в систему с использованием методов аутентификации без пароля.

Атрибуты роли, определенные здесь, не являются наследуемыми, то есть членство в роли, обладающей, например, CREATEDB не позволит участнику создавать новые базы данных, даже если при предоставлении членства был указан параметр INHERIT option. Разумеется, если при предоставлении членства был указан параметр SET роль-член сможет выполнить SET ROLE к роли createdb, а затем создать новую базу данных.

Назначения членства, создаваемые предложениями IN ROLE, ROLE, и ADMIN используют роль, выполняющую эту команду, в качестве предоставляющей стороны (grantor).

Предложение INHERIT атрибут является значением по умолчанию по соображениям обратной совместимости: в предыдущих выпусках Digital Q.DataBase, пользователи всегда имели доступ ко всем привилегиям групп, членами которых они состояли. Однако, NOINHERIT обеспечивает более точное соответствие семантике, определённой в стандарте SQL.

Digital Q.DataBase включает программу createuser которая обладает той же функциональностью, что и CREATE ROLE (на самом деле она вызывает эту команду), но может быть запущена из командной оболочки.

Предложение CONNECTION LIMIT параметр контролируется лишь приблизительно; если два новых сеанса запускаются почти одновременно, когда только один слот «подключения» остается свободным для роли, вполне возможно, что оба сеанса завершатся ошибкой. Кроме того, это ограничение никогда не применяется к суперпользователям.

При указании незашифрованного пароля в этой команде следует проявлять осторожность. Пароль будет передан на сервер в открытом виде, и он также может быть записан в историю команд клиента или в журнал сервера. Команда createuser, однако, передаёт пароль в зашифрованном виде. Кроме того, psql содержит команду \password которую можно использовать для безопасной смены пароля в дальнейшем.

Примеры

Создаёт роль, которая может подключаться к базе данных, но не задаёт ей пароль:

CREATE ROLE jonathan LOGIN;

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

CREATE USER davide WITH PASSWORD 'jw8s0F4';

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

Создаёт роль с паролем, который действителен до конца 2004 года. С первой секундой 2005 года пароль становится недействительным.

CREATE ROLE miriam WITH LOGIN PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';

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

CREATE ROLE admin WITH CREATEDB CREATEROLE;

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

Предложение CREATE ROLE оператор включен в стандарт SQL, но стандарт требует только синтаксис

CREATE ROLE name [ WITH ADMIN role_name ]

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

Стандарт SQL определяет понятия пользователей и ролей, но он рассматривает их как отдельные концепции и оставляет реализацию всех команд, определяющих пользователей, на усмотрение конкретных баз данных. В Digital Q.DataBase мы решили объединить пользователей и роли в единый тип сущностей. Поэтому роли имеют гораздо больше необязательных атрибутов, чем в стандарте.

Поведение, определенное стандартом SQL, наиболее точно имитируется созданием пользователей стандарта SQL как Digital Q.DataBase ролей с параметром NOINHERIT параметр, и роли стандарта SQL как Digital Q.DataBase ролей с параметром INHERIT параметром.

Предложение USER предложение ведет себя так же, как ROLE но признан устаревшим:

USER role_name [, ...]

Предложение IN GROUP предложение действует так же, как IN ROLE но признан устаревшим:

IN GROUP role_name [, ...]

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению