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Параметр является устаревшим, но в целях совместимости ещё работает.
-grole--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, чтобы исключить эту ненужную попытку подключения.
Переменные окружения
PGHOSTPGPORTPGUSERПараметры подключения по умолчанию
PG_COLORВыбирает вариант использования цвета в диагностических сообщениях. Возможные значения:
always(всегда),auto(автоматически) иnever(никогда).
Эта утилита, как и большинство других утилит Postgres Pro, также использует переменные среды, поддерживаемые libpq (см. Раздел 32.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;
В приведённом примере введённый пароль отображается лишь для отражения сути, на деле же он не выводится на экран. Как можно видеть, он шифруется прежде чем передаётся в команде клиенту.