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;
В приведенном выше примере новый пароль на самом деле не отображается на экране при вводе, но для ясности мы показываем, что было введено. Как можно заметить, перед отправкой клиенту пароль шифруется.