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