createuser

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


Синтаксис

createuser [параметр-подключения...] [параметр...] [имя_пользователя]

Описание

Утилита createuser создает нового пользователя QHB (или, точнее, роль). Создавать новых пользователей могут только суперпользователи и пользователи с правом CREATEROLE, поэтому createuser должна вызываться от их лица.

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

createuser — это обертка для команды SQL CREATE ROLE. Между созданием пользователей с помощью этой утилиты и их созданием иными способами при обращении к серверу по сути нет никакой разницы.


Параметры

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

имя_пользователя
Задает имя создаваемого пользователя QHB. Это имя должно отличаться от всех существующих ролей в этой установке QHB.

-a роль
--with-admin=роль
Задает существующую роль, которая будет автоматически добавлена как член новой роли с атрибутом ADMIN OPTION, что даст ей право предоставлять членство в новой роли другим ролям. Написав ключ -a несколько раз, можно задать несколько существующих ролей.

-c число
--connection-limit=число
Задает максимальное число подключений для нового пользователя. По умолчанию без ограничений.

-d
--createdb
Новому пользователю будет разрешено создавать базы данных.

-D
--no-createdb
Новому пользователю не будет разрешено создавать базы данных. Это поведение по умолчанию.

-e
--echo
Отобразить на экране команды, которые createuser генерирует и отправляет на сервер.

-E
--encrypted
Этот параметр устарел, но все еще принимается для обратной совместимости.

-g роль
--member-of=роль
--role=роль (устаревший)
Указывает, что новая роль должна быть автоматически добавлена как член заданной существующей роли. Написав ключ -g несколько раз, можно задать несколько существующих ролей.

-i
--inherit
Новая роль автоматически унаследует права ролей, членом которых она является. Это поведение по умолчанию.

-I
--no-inherit
Новая роль не будет автоматически наследовать права ролей, членом которых она является.

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

-l
--login
Новому пользователю будет разрешено авторизоваться на сервере (то есть его имя может использоваться как идентификатор исходного пользователя сеанса). Это поведение по умолчанию.

-L
--no-login
Новому пользователю будет запрещено авторизоваться на сервере. (Роль без права авторизации на сервере все равно полезна в качестве средства управления разрешениями в базе данных.)

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

-P
--pwprompt
Если этот параметр указан, то createuser выдаст запрос на пароль для нового пользователя. Если не планируется аутентификация по паролю, в этом нет необходимости.

-r
--createrole
Новому пользователю будет разрешено создавать, менять, удалять, комментировать другие роли, а также менять для них метку безопасности; то есть этот пользователь наделяется правом CREATEROLE. Более подробную информацию о возможностях, предоставляемых этим правом, см. в описании атрибута role creation.

-R
--no-createrole
Новому пользователю не будет разрешено создавать новые роли. Это поведение по умолчанию.

-s
--superuser
Новый пользователь будет суперпользователем.

-S
--no-superuser
Новый пользователь не будет суперпользователем. Это поведение по умолчанию.

-v метка_времени
--valid-until=метка_времени
Устанавливает дату и время, после которых пароль роли перестает действовать. По умолчанию срок действия пароля неограничен.

-V
--version
Вывести версию createuser и завершиться.

--bypassrls
Новый пользователь будет обходить все политики защиты уровня строк (row-level security, RLS).

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

--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 (никогда).

Кроме того, эта утилита, как и большинство других утилит QHB, использует переменные среды, поддерживаемые 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:

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

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

$ 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