createuser

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

Синтаксис

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

Описание

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

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

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

Параметры

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

Флаги

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

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

-?
--help
Показать справку об аргументах командной строки createuser и завершиться.

Параметры подключения

-h хост
--host=хост
Задает имя хост-компьютера, на котором работает сервер. Если значение начинается со слэша, оно используется в качестве каталога для Unix-сокета. Вместо этого параметра можно воспользоваться переменной среды PGHOST.

-p порт
--port=порт
Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения.

-U имя_пользователя
--username=имя_пользователя
Имя пользователя, под которым производится подключение (не имя создаваемого пользователя).

-w
--no-password
Никогда не запрашивать ввод пароля. Если серверу требуется аутентификация по паролю, и пароль недоступен с помощью иных средств, таких как файл .pgpass, попытка подключения завершится неудачно. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, чтобы ввести пароль.

-W
--password
Принудительно запрашивать пароль перед подключением к базе данных.

Это несущественный параметр, так как createuser автоматически запросит пароль, если сервер требует аутентификацию по паролю. Однако чтобы выяснить это, createuser потребуется дополнительная попытка подключения к серверу. В некоторых случаях имеет смысл ввести -W, чтобы исключить эту лишнюю попытку.

Параметры

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

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

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

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

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

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

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

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

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

-r
--createrole
Новому пользователю будет разрешено создавать другие роли (то есть этот пользователь наделяется правом CREATEROLE).

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

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

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

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

--replication
Новый пользователь будет наделен правом REPLICATION, которое более подробно описано в документации по CREATE ROLE.

--no-replication
Новый пользователь не будет наделен правом REPLICATION.

Аргументы

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

Переменные среды

PGHOST
PGPORT
PGUSER
Параметры подключения по умолчанию.

PG_COLOR
Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения: always (всегда), auto (автоматически) и never (никогда).

Диагностика

В случае возникновения затруднений обратитесь к CREATE ROLE и psql, где рассматриваются потенциальные проблемы и сообщения об ошибках. Сервер базы данных должен работать на целевом хосте.

Примеры

Создать пользователя 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