Управление пользователями
Если ключи – d, – D, – а, – А или имя пользователя отсутствуют, программа createuser запрашивает все недостающие данные. Это связано с тем, что PostgreSQL не строит никаких предположений относительно прав нового пользователя или его имени. В листинге 10.4 создается пользователь newuser, которому запрещено создавать новые базы данных и новых пользователей.
Листинг 10.4. Создание пользователя сценарием createuser.
[jworsley@booktown – ]$ createuser – U manager – D – A newuser CREATE USER
Обратите внимание на ключ – U manager, переданный сценарию createuser. Он указывает на то, что к PostgreSQL подключается пользователь manager, а не jworsl ey, как предположил бы сценарий по имени системной учетной записи, вызвавшей сценарий.
Если вы предпочитаете, чтобы все параметры запрашивались в интерактивном режиме (и вам не приходилось запоминать все ключи или каждый раз обращаться к документации), просто не указывайте те ключи, в которых вы не уверены. Сценарий createuser сам запросит все недостающие данные – имя пользователя, право создания баз данных и пользователей PostgreSQL.
В листинге 10.5 приведен пример использования сценария createuser в интерактивном режиме. При этом выполняются те же действия, как при однострочном вызове в листинге 10.4.
Листинг 10.5. Интерактивное создание пользователя сценарием createuser.
[jworsley@booktown – ]$ createuser Enter name of user to add: newuser Shall the new user be allowed to create databases? (y/n) n Shall the new user be allowed to create more new users? (y/n) n CREATE USER
Модификация пользователей
Существующие учетные записи пользователей могут изменяться только суперпользователями PostgreSQL. При этом допускается изменение всех параметров, указываемых при создании пользователя (пароль, срок действия, глобальные права), кроме системного идентификатора. Модификация существующих пользователей производится командой SQL ALTER USER.
Синтаксис команды ALTER USER:
ALTER USER пользователь [ WITH PASSWORD 'пароль' ] [ CREATEDB NOCREATEDB ] [ CREATEUSER NOCREATEUSER ] [ VALID UNTIL 'срок' ]
Обязательный аргумент пользователь определяет пользователя, параметры которого требуется изменить. Ниже перечислены необязательные параметры команды.
- WITH PASSWORD 'пароль'. Пользователю назначается заданный пароль.
- CREATEDB [ NOCREATEDB. Пользователю разрешается или запрещается создавать новые базы данных.
- CREATEUSER | NOCREATEUSER. Пользователю предоставляется статус суперпользователя (или он лишается этого статуса), при котором он обладает всеми правами в PostgreSQL, в том числе правом создания и уничтожения пользователей и суперпользователей.
- VALID UNTIL 'срок'. Пароль пользователя становится недействительным в указанный момент, который задается в одном из поддерживаемых форматов времени. Значение действует только для систем, требующих парольной аутентификации, и в остальных случаях игнорируется (например, для доверенных хостов).
Команда ALTER USER часто используется для изменения пароля и/или срока действия пароля. Если срок действия пароля, заданного при создании пользователя, истек, а пользователь требует парольной аутентификации, суперпользователю придется изменить пароль и срок его действия, чтобы пользователь смог снова подключиться к базе. Если срок действия пароля не ограничивается, воспользуйтесь специальным значением infinity..