createuser#
createuser
createuser — определить новую учетную запись пользователя Tantor SE
Синтаксис
createuser
[connection-option
...] [option
...] [username
]
Описание
createuser создает нового пользователя (или, точнее, роль) Tantor SE. Только суперпользователи и пользователи с привилегией CREATEROLE
могут создавать новых пользователей, поэтому createuser должен быть вызван кем-то, кто может подключиться как суперпользователь или пользователь с привилегией CREATEROLE
.
Если нужно создать роль с привилегиями SUPERUSER
,
REPLICATION
или BYPASSRLS
,
вы должны подключиться как суперпользователь, а не просто с
привилегией CREATEROLE
.
Быть суперпользователем означает возможность обходить все проверки прав доступа
в базе данных, поэтому суперпользовательский доступ не следует предоставлять
легкомысленно. CREATEROLE
также передает
очень обширные привилегии.
createuser - это оболочка для команды SQL CREATE ROLE
.
Нет эффективной разницы между созданием пользователей с помощью этой утилиты и другими методами доступа к серверу.
Опции
createuser принимает следующие аргументы командной строки:
username
Указывает имя пользователя Tantor SE, который будет создан. Это имя должно отличаться от всех существующих ролей в этой установке Tantor SE.
-c
number
--connection-limit=
number
Установите максимальное количество соединений для нового пользователя. По умолчанию не устанавливается ограничение.
-d
--createdb
Новому пользователю будет разрешено создавать базы данных.
-D
--no-createdb
Новому пользователю не будет разрешено создавать базы данных. Это значение по умолчанию.
-e
--echo
Отобразите команды, которые генерирует и отправляет на сервер приложение createuser.
-E
--encrypted
Эта опция устарела, но все еще принимается для обратной совместимости.
-g
role
--role=
role
Указывает роль, к которой эта роль будет немедленно добавлена в качестве нового участника. Можно указать несколько ролей, к которым эта роль будет добавлена в качестве участника, написав несколько переключателей
-g
.-i
--inherit
Новая роль автоматически наследует привилегии ролей, к которым она принадлежит. Это является значением по умолчанию.
-I
--no-inherit
Новая роль не будет автоматически наследовать привилегии ролей, к которым она принадлежит.
--interactive
Запросите имя пользователя, если оно не указано в командной строке, а также запросите любой из вариантов
-d
/-D
,-r
/-R
,-s
/-S
, который не указан в командной строке. (Это было поведение по умолчанию до PostgreSQL 9.1).-l
--login
Новому пользователю будет разрешено входить в систему (то есть имя пользователя может быть использовано в качестве идентификатора начальной сессии). Это значение по умолчанию.
-L
--no-login
Новому пользователю не будет разрешено входить в систему. (Роль без привилегии входа все равно полезна как средство управления разрешениями базы данных).
-P
--pwprompt
Если указано, то createuser выдаст запрос на ввод пароля для нового пользователя. Это необязательно, если вы не планируете использовать аутентификацию по паролю.
-r
--createrole
Новому пользователю будет разрешено создавать, изменять, удалять, комментировать, изменять метку безопасности для и предоставлять или отзывать членство в других ролях; то есть, у этого пользователя будет привилегия
CREATEROLE
. См. role creation для получения более подробной информации о том, какие возможности предоставляются этим привилегией.-R
--no-createrole
Новому пользователю не будет разрешено создавать новые роли. Это значение по умолчанию.
-s
--superuser
Новый пользователь будет суперпользователем.
-S
--no-superuser
Новый пользователь не будет суперпользователем. Это значение по умолчанию.
-V
--version
Выведите версию createuser и завершите работу.
--replication
Новому пользователю будет предоставлено привилегия
REPLICATION
, которая подробно описана в документации для CREATE ROLE.--no-replication
Новому пользователю не будет предоставлено привилегии
REPLICATION
, которая подробно описана в документации для CREATE ROLE.-?
--help
Показать справку о командной строке для аргументов createuser и выйти.
createuser также принимает следующие аргументы командной строки для параметров подключения:
-h
host
--host=
host
Определяет имя хоста машины, на которой работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для Unix-доменного сокета.
-p
port
--port=
port
Указывает TCP-порт или расширение локального файла сокета Unix, на котором сервер прослушивает соединения.
-U
username
--username=
username
Имя пользователя для подключения (не имя пользователя для создания).
-w
--no-password
Не запрашивать пароль. Если сервер требует аутентификации по паролю и пароль не доступен другими средствами, такими как файл
.pgpass
, попытка подключения завершится неудачей. Этот параметр может быть полезен в пакетных заданиях и скриптах, где отсутствует пользователь, чтобы ввести пароль.-W
--password
Принудительно createuser попросить ввести пароль (для подключения к серверу, а не для пароля нового пользователя).
Эта опция никогда не является обязательной, так как createuser автоматически запросит пароль, если сервер требует аутентификацию по паролю. Однако createuser потратит попытку подключения, чтобы узнать, что сервер требует пароль. В некоторых случаях стоит набрать
-W
, чтобы избежать дополнительной попытки подключения.
Окружение
PGHOST
PGPORT
PGUSER
Параметры подключения по умолчанию
PG_COLOR
Определяет, следует ли использовать цвет в диагностических сообщениях. Возможные значения:
always
,auto
иnever
.
Эта утилита, как и большинство других утилит Tantor SE, также использует переменные среды, поддерживаемые libpq (см. Раздел 32.15).
Диагностика
В случае затруднений см. 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;
В приведенном выше примере новый пароль на самом деле не отображается при вводе, но мы показываем, что было введено для ясности. Как видите, пароль шифруется перед отправкой клиенту.