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