Управление пользователями
В листинге 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).