createuser создаёт нового пользователя PostgreSQL, а если точнее — роль. Лишь суперпользователь и пользователи с привилегией CREATEROLE могут создавать новые роли, таким образом, createuser должна запускаться от их лица.
Чтобы создать дополнительного суперпользователя, необходимо подключиться под уже существующим, одной привилегии CREATEROLE не достаточно. Поскольку для суперпользователей игнорируются любые проверки в базе данных, стоит внимательно относится к выдаче таких прав.
createuser это обёртка для SQL-команды CREATE ROLE. Создание пользователей с её помощью по сути не отличается от выполнения того же действия при обращении к серверу другими способами.
createuser принимает следующие аргументы:
Указывает PostgreSQL имя создаваемого пользователя. Имя роли должно быть уникальным в рамках кластера PostgreSQL.
Устанавливает максимальное допустимое количество соединений для создаваемого пользователя. По умолчанию ограничение в количестве соединений отсутствует.
Разрешает новому пользователю создавать базы данных.
Запрещает новому пользователю создавать базы данных. Это поведение по умолчанию.
Вывести команды к серверу, генерируемые при выполнении createuser.
Шифровать пароль пользователя, хранимый в базе. Если флаг не указан, то для пароля используется поведение по умолчанию.
Указывает роль, к которой будет добавлена текущая роль в качестве члена группы. Допускается множественное использование флага -g.
Создаваемая роль автоматически унаследует привилегии ролей, в группы которых она войдёт. Это поведение по умолчанию.
Роль не будет наследовать привилегии ролей, в группы которых она войдёт.
Запросить имя для создаваемого пользователя, а также значения для флагов -d/-D, -r/-R, -s/-S, если они явно не указаны в командной строке. До версии PostgreSQL 9.1 включительно это было поведением по умолчанию.
Позволяет создаваемому пользователю открывать сессии. Это поведение по умолчанию.
Запрещает создаваемому пользователю открывать сессии. При этом роль может использоваться для управления привилегиями базы данных.
Не шифровать пароль, хранимый в базе. Если флаг не указан, то для пароля используется поведение по умолчанию.
Если флаг указан, то createuser запросит пароль для создаваемого пользователя. Если не планируется аутентификация по паролю, то пароль можно не устанавливать.
Разрешает новому пользователю создавать другие роли, что означает наделение привилегией CREATEROLE.
Запрещает пользователю создавать новые роли. Это поведение по умолчанию.
Создаваемая роль будет иметь права суперпользователя.
Новый пользователь не будет суперпользователем. Это поведение по умолчанию.
Вывести версию createuser и завершить выполнение.
Создаваемый пользователь будет наделён правом REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.
Создаваемый пользователь не будет иметь привилегии REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.
Вывести помощь по команде createuser.
createuser также принимает из командной строки параметры подключения:
Указывает имя компьютера, на котором запущен сервер. Если значение начинается с косой черты, оно интерпретируется как имя каталога с доменным сокетом Unix.
Указывает TCP-порт или расширение файла Unix-сокета, на котором сервер слушает подключения.
Имя пользователя, под которым производится текущее подключение к базе (это не имя создаваемого пользователя).
Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл .pgpass, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.
Принудительно запрашивать пароль перед подключением к базе данных.
Это несущественный параметр, так как createuser запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако, чтобы понять это, createuser лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W, чтобы исключить эту ненужную попытку подключения.
Параметры подключения по умолчанию
Эта утилита, как и большинство других утилит PostgreSQL, также использует переменные среды, поддерживаемые libpq (см. Раздел 31.14).
В случае возникновения трудностей, обратитесь к CREATE ROLE и psql . Переменные окружения и параметры подключения по умолчанию libpq будут применены при запуске утилиты, это следует учитывать при диагностике.
Чтобы создать роль joe на сервере, используемом по умолчанию:
$ createuser joe
Чтобы создать роль joe на сервере, используемом по умолчанию, с запросом дополнительных параметров:
$ createuser --interactive joe Назначить роль суперпользователем? (y/n) n Разрешить новой роли создавать базы данных? (y/n) n Разрешить новой роли создавать другие роли? (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 Введите пароль для новой роли: xyzzy Подтвердите ввод пароля: xyzzy CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
В приведённом примере введённый пароль отображается лишь для отражения сути, на деле же он не выводится на экран. Как видно в выводе журнала команд, пароль зашифрован. Если же указан флаг --unencrypted, то он отобразиться в этом журнале неизменным, а также, возможно, и в других журналах сервера. По этой причине в этой ситуации стоит использовать флаг -e с особой осторожностью.
| Пред. | Начало | След. |
| createlang | Уровень выше | dropdb |