createuser
createuser
- определить новую учетную запись пользователя QHB
Синтаксис
createuser [connection-option...] [option...] [ROLENAME]
Описание
createuser
создает нового пользователя QHB (или, точнее, роль).
Только суперпользователи и пользователи с привилегией CREATEROLE могут
создавать новых пользователей, поэтому createuser
должен вызывать тот,
кто может подключиться как суперпользователь или пользователь с привилегией CREATEROLE .
Если вы хотите создать нового суперпользователя, вы должны подключиться как уже существующий суперпользователь, а не просто с привилегией CREATEROLE. Быть суперпользователем подразумевает возможность обходить все проверки прав доступа в базе данных, поэтому права суперпользователя не следует предоставлять легкомысленно.
createuser
- это "обертка" над SQL командой CREATE ROLE. Нет
разницы между созданием пользователей с помощью этой утилиты или же иным способом при обращении к серверу. Подробнее про атрибуты ролей описано в ROLE ATTRIBUTES.
Параметры
createuser
принимает следующие аргументы командной строки:
FLAGS:
Аргумент | Описание |
---|---|
-?, --help | Показать справку об аргументах командной строки и выйти |
-V, --version | Распечатать версию createuser и выйти |
-e, --echo | Выводит на экран команды, которые createuser генерирует и отправляет на сервер. |
CONNECTION OPTIONS:
Аргумент | Описание |
---|---|
-h, --host=HOSTNAME | Указывает имя хоста компьютера, на котором работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для сокета домена Unix. |
-p, --port=PORT | Указывает порт TCP или расширение файла локального сокета домена Unix, на котором сервер прослушивает соединения. |
-U, --username=USERNAME | Имя пользователя для подключения (не имя пользователя роли которое будет создано) |
-w, --no-password | Не запрашивать ввод пароля. Если серверу требуется аутентификация по паролю, а пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачно. Эта опция может быть полезна в пакетных заданиях и сценариях, где нет ни одного пользователя для ввода пароля. |
-W, --password | Эта опция не является существенной, так как createuser автоматически запросит пароль, если сервер требует аутентификацию по паролю. Тем не менее, createuser будет тратить попытки подключения, для аутентификации. В некоторых случаях стоит ввести -W чтобы избежать дополнительной попытки подключения. |
OPTIONS:
Аргумент | Описание |
---|---|
-c, --connection-limit=N | Устанавливает максимальное количество подключений для нового пользователя. По умолчанию установлено без ограничений. |
-d, --createdb | Новому пользователю будет разрешено создавать базы данных. |
-D, --no-createdb | Новому пользователю не будет разрешено создавать базы данных. Это поведение используется по умолчанию. |
-g, --role=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. |
ARGS:
Аргумент | Описание |
---|---|
ROLENAME | Определяет имя пользователя QHB, который будет создан. Это имя должно отличаться от всех существующих ролей в этой установке QHB. |
Окружение
PGHOST
PGPORT
PGUSER
- Параметры подключения по умолчанию
PG_COLOR
- Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения always, auto, never .
Диагностика
В случае затруднений см. CREATE ROLE и qsql для ознакомления потенциальных проблем и сообщений об ошибках. Сервер базы данных должен работать на целевом хосте. Кроме того, будут применяться любые параметры подключения по умолчанию и переменные среды.
Примеры
Создание пользователя 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;
В приведенном выше примере новый пароль фактически не отображается при вводе, но мы показываем, что было введено для ясности. Как видите, пароль зашифрован перед отправкой клиенту.