Иллюстрированный самоучитель по PostgreSQL

Управление пользователями

В листинге 10.2 создается пользователь dbuser, которому разрешено создавать новые базы данных. Для этого после имени пользователя указывается ключевое слово CREATEDB. Также обратите внимание на секции WITH PASSWORD и VALID UNTIL – пользователю dbuser назначается пароль DbuS3r, действующий до 11 ноября 2002 года.

Листинг 10.2. Создание пользователя с правом CREATEDB.

tempiatel=# CREATE USER dbuser CREATEDB
tempiatel-# WITH PASSWORD 'DbuS3r'
tempiatel-f VALID UNTIL '2002-11-11';
CREATE USER

Замена пароля с истекшим сроком действия не изменяет значения, указанного в секции VALUD UNTIL. Чтобы заново активизировать пользователя с истекшим сроком действия пароля, следует выполнить команду ALTER USER с секциями WITH PASSWORD и VALID UNTIL. Дополнительная информация о команде ALTER USER приведена в подразделе "Модификация пользователей" этого раздела.

Внимание
Секция VALID UNTIL не относится к доверенным хостам, для которых пароль не нужен. Аутентификация хостов рассматривалась в главе 8
.

Вероятно, помимо суперпользователя postgres вам понадобятся и другие суперпользователи, однако при их создании необходима осторожность. Супериоль-зователям предоставляются все права PostgreSQL, включая права создания и удаления пользователей, а также уничтожения баз данных. В листинге 10.3 приведен пример создания суперпользователя PostgreSQL с именем manager из приглашения psql.

Листинг 10.3. Создание суперпользователя.

tempiatel=# CREATE USER manager CREATEUSER;
CREATE USER

Создание пользователей при помощи сценария createuser

Сценарий createuser запускается непосредственно из командной строки и работает в одном из двух режимов. При вызове без аргументов он запрашивает имя пользователя с его правами и пытается установить локальное подключение к PostgreSQL. Во втором режиме имя пользователя и параметры передаются в командной строке.

Как и в других приложениях командной строки PostgreSQL, ключи задаются в коротком (с одним дефисом и одним символом) или в длинном формате (с двумя дефисами и полным ключом).

Синтаксис командной строки приложения createuser:

createuser [ параметры ] [ пользователь ]

Параметр пользователь представляет имя создаваемого-пользователя. Строка параметров содержит один из ключей, перечисленных ниже.

  • – d, --createdb. Аналог ключевого слова CREATEDB в команде SQL CREATE USER. Разрешает новому пользователю создавать базы данных.
  • – D, --nocreatedb. Аналог ключевого слова NOCREATEDB в команде SQL CREATE USER. Запрещает новому пользователю создавать базы данных (используется по умолчанию).
  • – а, --adduser. Аналог ключевого слова CREATEUSER в команде SQL CREATE USER. Разрешает новому пользователю создавать других пользователей и поднимает его статус до суперпользователя (с предоставлением всех прав в PostgreSQL).
  • – А, --no-adduser. Аналог ключевого слова NOCREATEUSER в команде SQL CREATE USER. Указывает на то, что новый пользователь не является суперпользователем (используется по умолчанию).
  • – i sysid, --sysid=sysid. Новому пользователю присваивается системный идентификатор sysid.
  • – Р, --pwprompt. Пароль нового пользователя вводится в специальном приглашении.
  • – h хост, --host=xocт. Хост, с которым устанавливается связь для создания базы данных. По умолчанию используется хост local host или значение переменной среды PGHOST.
  • – р порт, --port=пopт. Порт, по которому должно производиться подключение к серверу, вместо порта по умолчанию (обычно 5432).
  • – U пользователь, пользователь. Имя пользователя, с которым производится подключение к PostgreSQL. По умолчанию используется имя системного пользователя, запустившего программу (createuser).
  • – W, --password. У подключающегося пользователя запрашивается пароль. Это происходит автоматически, если в файле pg_hba.conf хост, от которого поступил запрос, не объявлен доверенным.
  • – е, --echo. Команда CREATE USER, передаваемая PostgreSQL, выводится на экран в момент ее выполнения программой createuser.
  • – q, --quiet. Ключ передается без параметров и запрещает вывод данных в поток stdout (хотя ошибки по-прежнему направляются в поток stderr).
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.