createuser
createuser — создать новую учётную запись Postgres Pro
Синтаксис
createuser [параметр-подключения...] [параметр...] [имя_пользователя]
Описание
createuser создаёт нового пользователя Postgres Pro, а если точнее — роль. Лишь суперпользователь и пользователи с привилегией CREATEROLE могут создавать новые роли, таким образом, createuser должна запускаться от их лица.
Чтобы создать роль с правом SUPERUSER, REPLICATION или BYPASSRLS, необходимо подключиться от имени существующего суперпользователя, одного лишь права CREATEROLE недостаточно. Поскольку суперпользователи могут обходить все ограничения доступа в базе данных, к назначению этих полномочий не следует относиться легкомысленно.
createuser — это обёртка для SQL-команды CREATE ROLE. Создание пользователей с её помощью по сути не отличается от выполнения того же действия при обращении к серверу другими способами.
Параметры
createuser принимает следующие аргументы:
- имя_пользователя
- Задаёт имя создаваемого пользователя Postgres Pro. Это имя должно отличаться от имён всех существующих ролей в данной инсталляции Postgres Pro. 
- -c- номер- --connection-limit=- номер
- Устанавливает максимальное допустимое количество соединений для создаваемого пользователя. По умолчанию ограничение в количестве соединений отсутствует. 
- -d- --createdb
- Разрешает новому пользователю создавать базы данных. 
- -D- --no-createdb
- Запрещает новому пользователю создавать базы данных. Это поведение по умолчанию. 
- -e- --echo
- Вывести команды к серверу, генерируемые при выполнении createuser. 
- -E- --encrypted
- Параметр является устаревшим, но в целях совместимости ещё работает. 
- -g- role- --role=- role
- Указывает роль, к которой будет добавлена текущая роль в качестве члена группы. Допускается множественное использование флага - -g.
- -i- --inherit
- Создаваемая роль автоматически унаследует права ролей, в которые она включается. Это поведение по умолчанию. 
- -I- --no-inherit
- Роль не будет наследовать права ролей, в которые она включается. 
- --interactive
- Запросить имя для создаваемого пользователя, а также значения для флагов - -d/- -D,- -r/- -R,- -s/- -S, если они явно не указаны в командной строке. До версии PostgreSQL 9.1 включительно это было поведением по умолчанию.
- -l- --login
- Новый пользователь сможет подключаться к серверу (то есть его имя может быть идентификатором начального пользователя сеанса). Это свойство по умолчанию. 
- -L- --no-login
- Новый пользователь не сможет подключаться к серверу. (Роль без права входа на сервер тем не менее полезна для управления разрешениями в базе данных.) 
- -P- --pwprompt
- Если флаг указан, то createuser запросит пароль для создаваемого пользователя. Если не планируется аутентификация по паролю, то пароль можно не устанавливать. 
- -r- --createrole
- Новый пользователь сможет создавать, изменять и удалять другие роли, добавлять для них комментарии и изменять метку безопасности, а также выдавать или отбирать членство в любых ролях (то есть этот пользователь будет иметь право - CREATEROLE). Подробнее возможности, предоставляемые этим правом, описаны в Создание роли.
- -R- --no-createrole
- Запрещает пользователю создавать новые роли. Это поведение по умолчанию. 
- -s- --superuser
- Создаваемая роль будет иметь права суперпользователя. 
- -S- --no-superuser
- Новый пользователь не будет суперпользователем. Это поведение по умолчанию. 
- -V- --version
- Вывести версию createuser и завершить выполнение. 
- --replication
- Создаваемый пользователь будет наделён правом - REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.
- --no-replication
- Создаваемый пользователь не будет иметь привилегии - REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.
- -?- --help
- Вывести помощь по команде createuser. 
createuser также принимает из командной строки параметры подключения:
- -h- сервер- --host=- сервер
- Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета. 
- -p- порт- --port=- порт
- Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения. 
- -U- имя_пользователя- --username=- имя_пользователя
- Имя пользователя для подключения (не имя создаваемого пользователя). 
- -w- --no-password
- Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл - .pgpass, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.
- -W- --password
- Принудительно запрашивать пароль перед подключением к базе данных. - Это несущественный параметр, так как createuser запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, createuser лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести - -W, чтобы исключить эту ненужную попытку подключения.
Переменные окружения
- PGHOST- PGPORT- PGUSER
- Параметры подключения по умолчанию 
- PG_COLOR
- Выбирает вариант использования цвета в диагностических сообщениях. Возможные значения: - always(всегда),- auto(автоматически) и- never(никогда).
Эта утилита, как и большинство других утилит Postgres Pro, также использует переменные среды, поддерживаемые libpq (см. Раздел 35.14).
Диагностика
В случае возникновения трудностей, обратитесь к CREATE ROLE и psql. Переменные окружения и параметры подключения по умолчанию libpq будут применены при запуске утилиты, это следует учитывать при диагностике.
Примеры
Чтобы создать роль joe на сервере, используемом по умолчанию: 
$createuser joe
Чтобы создать роль joe на сервере, используемом по умолчанию, с запросом дополнительных параметров: 
$createuser --interactive joeНазначить роль суперпользователем? (y/n)nРазрешить новой роли создавать базы данных? (y/n)nРазрешить новой роли создавать другие роли? (y/n)n
Чтобы создать того же пользователя joe с явно заданными атрибутами, подключившись к компьютеру eden, порту 5000: 
$createuser -h eden -p 5000 -S -D -R -e joeCREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
Чтобы создать роль joe с правами суперпользователя и предустановленным паролем: 
$createuser -P -s -e joeВведите пароль для новой роли:xyzzyПовторите его:xyzzyCREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
В приведённом примере введённый пароль отображается лишь для отражения сути, на деле же он не выводится на экран. Как можно видеть, он шифруется прежде чем передаётся в команде клиенту.