createuser#

Примечание

Эта страница переведена при помощи нейросети GigaChat.

createuser — создает новую учетную запись пользователя PostgreSQL.

Синтаксис#

createuser [connection-option...] [option...] [username]

Описание#

createuser — утилита для создания новых пользователей PostgreSQL (точнее — ролей). Пользователь, выполняющий эту команду, должен быть суперпользователем или иметь права CREATEROLE.

Если необходимо создать роль с правами SUPERUSER, REPLICATION или BYPASSRLS, подключитесь как суперпользователь — прав CREATEROLE в этом случае будет недостаточно. Учетные записи с правами суперпользователя имеют неограниченный доступ и могут обходить любые проверки прав, поэтому предоставлять такие права следует с особой осторожностью, даже CREATEROLE дает значительные полномочия.

createuser является оболочкой для SQL-команды CREATE ROLE. По своей эффективности она не отличается от создания роли другими способами, доступными в сервере PostgreSQL.

Параметры#

Для утилиты createuser существуют следующие параметры командной строки:

username

Задает имя создаваемого пользователя PostgreSQL. Оно не должно совпадать с уже существующими ролями в этом экземпляре PostgreSQL.

-a role
--with-admin=role

Задает существующую роль, которая автоматически добавляется членом новой роли с опцией администратора, предоставляя ей право выдавать членство в новой роли другим пользователям. Можно указать несколько существующих ролей, написав несколько переключателей -a.

-c number
--connection-limit=number

Устанавливает максимальное допустимое количество соединений для нового пользователя. По умолчанию ограничений нет.

-d
--createdb

Разрешает пользователю создавать базы данных.

-D
--no-createdb

Запрещает пользователю создавать базы данных (значение по умолчанию).

-e
--echo

Выводит на экран команды, которые createuser отправляет на сервер.

-E
--encrypted

Устаревший параметр, но еще работает для совместимости.

-g role
--member-of=role
--role=role (устаревший)

Указывает, что новая роль должна автоматически стать членом указанной существующей роли. Несколько существующих ролей можно задать, указав несколько переключателей -g.

-i
--inherit

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

-I
--no-inherit

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

--interactive

Запрашивает имя пользователя и/или ключи -d/-D, -r/-R, -s/-S, если они не указаны в командной строке. Такое поведение было стандартным до версии 9.1 PostgreSQL.

-l
--login

Разрешает пользователю подключаться к серверу (имя пользователя может быть идентификатором начального пользователя сеанса). Значение по умолчанию.

-L
--no-login

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

-m role
--with-member=role

Задает существующую роль, которая автоматически добавляется членом новой роли. Можно указать несколько существующих ролей, написав несколько переключателей -m.

-P
--pwprompt

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

-r
--createrole

Предоставляет пользователю право создавать, изменять и удалять другие роли, добавлять для них комментарии и изменять метку безопасности, а также выдавать или отбирать членство в любых ролях (привилегия CREATEROLE). Подробнее о возможностях привилегии приведено в разделе «Атрибуты ролей».

-R
--no-createrole

Запрещает создание новых ролей (значение по умолчанию).

-s
--superuser

Назначает новому пользователю статус суперпользователя.

-S
--no-superuser

Не предоставляет статус суперпользователя (значение по умолчанию).

-v timestamp
--valid-until=timestamp

Устанавливает дату и время после истечения которых пароль роли становится недействительным. По умолчанию срок действия пароля неограничен.

-V
--version

Выводит версию createuser и завершается.

--bypassrls

Новый пользователь будет обходить каждую политику безопасности на уровне строк (RLS).

--no-bypassrls

Новый пользователь не будет обходить политики безопасности на уровне строк (RLS). Это значение по умолчанию.

--replication

Предоставляет пользователю право использовать потоковую репликацию (REPLICATION). Более подробно описано в документации по CREATE ROLE.

--no-replication

Не предоставляет права REPLICATION (поведение по умолчанию). Более подробно описано в документации по CREATE ROLE. Это поведение по умолчанию.

-?
--help

Показывает справку о параметрах командной строки утилиты createuser и завершается.

-h host
--host=host

Указывает хост компьютера, на котором запущен сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета.

-p port
--port=port

Указывает TCP-порт или расширение файла локального Unix-сокета для подключения к серверу.

-U username
--username=username

Указывает имя пользователя для подключения (не имя пользователя, которое нужно создать).

-w
--no-password

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

-W
--password

Запрашивает пароль перед подключением к основному серверу.

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

Переменные окружения#

Утилита поддерживает переменные окружения:

  • PGHOST

  • PGPORT

  • PGUSER

  • PG_COLOR

PG_COLOR указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.

Утилита createuser использует переменные окружения, поддерживаемые libpq.

Диагностика#

В случае возникновения трудностей, обратитесь в разделы CREATE ROLE и psql.

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

Примеры#

Создание пользователя joe на сервере баз данных по умолчанию:

$ createuser joe

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

$ createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

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

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

Создание пользователя joe как суперпользователя и назначение пароля с просмотром SQL команды:

$ createuser -P -s -e joe
Enter password for new role: xyzzy
Enter it again: xyzzy
CREATE ROLE joe PASSWORD 'SCRAM-SHA-256$4096:<hash>' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN NOREPLICATION NOBYPASSRLS;

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

Смотрите также#

dropuser, CREATE ROLE, createrole_self_grant