Перейти к основному содержимому

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 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

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

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

dropuser, CREATE ROLE, createrole_self_grant