createuser

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


Синтаксис

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

Описание

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

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

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


Параметры

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

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

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

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

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

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

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

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

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

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

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

-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.

-?
--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