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, чтобы избежать дополнительной попытки подключения.
Переменные окружения#
Утилита поддерживает переменные окружения:
PGHOSTPGPORTPGUSERPG_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;
В приведенном выше примере новый пароль фактически не отображается при вводе, но для ясности показано, что было введено. Пароль шифруется перед отправкой клиенту.