Postgresql создание пользователя: Создать пользователя в PostgreSQL — новый юзер с паролем, правами администратора или на чтение

PostgreSQL : Документация: 10: createuser : Компания Postgres Professional

RU

EN

RU EN

createuser

createuser — создать новую учётную запись PostgreSQL

Синтаксис

createuser [параметр-подключения…] [параметр…] [имя_пользователя]

Описание

createuser создаёт нового пользователя PostgreSQL, а если точнее — роль. Лишь суперпользователь и пользователи с привилегией CREATEROLE могут создавать новые роли, таким образом, createuser должна запускаться от их лица.

Чтобы создать дополнительного суперпользователя, необходимо подключиться от имени существующего, одного лишь права CREATEROLE недостаточно. Поскольку суперпользователи могут обходить все ограничения доступа в базе данных, к назначению этих полномочий не следует относиться легкомысленно.

createuser — это обёртка для SQL-команды CREATE ROLE. Создание пользователей с её помощью по сути не отличается от выполнения того же действия при обращении к серверу другими способами.

Параметры

createuser принимает следующие аргументы:

имя_пользователя

Задаёт имя создаваемого пользователя PostgreSQL. Это имя должно отличаться от имён всех существующих ролей в данной инсталляции PostgreSQL.

-c номер
--connection-limit=номер

Устанавливает максимальное допустимое количество соединений для создаваемого пользователя. По умолчанию ограничение в количестве соединений отсутствует.

-d
--createdb

Разрешает новому пользователю создавать базы данных.

-D
--no-createdb

Запрещает новому пользователю создавать базы данных. Это поведение по умолчанию.

-e
--echo

Вывести команды к серверу, генерируемые при выполнении createuser.

-E
--encrypted

Параметр является устаревшим, но в целях совместимости ещё работает.

-g role
--role=role

Указывает роль, к которой будет добавлена текущая роль в качестве члена группы. Допускается множественное использование флага -g.

-i
--inherit

Создаваемая роль автоматически унаследует права ролей, в которые она включается. Это поведение по умолчанию.

-I
--no-inherit

Роль не будет наследовать права ролей, в которые она включается.

--interactive

Запросить имя для создаваемого пользователя, а также значения для флагов -d/-D, -r/-R, -s/-S, если они явно не указаны в командной строке. До версии PostgreSQL 9.1 включительно это было поведением по умолчанию.

-l
--login

Новый пользователь сможет подключаться к серверу (то есть его имя может быть идентификатором начального пользователя сеанса). Это свойство по умолчанию.

-L
--no-login

Новый пользователь не сможет подключаться к серверу. (Роль без права входа на сервер тем не менее полезна для управления разрешениями в базе данных.)

-P
--pwprompt

Если флаг указан, то createuser запросит пароль для создаваемого пользователя. Если не планируется аутентификация по паролю, то пароль можно не устанавливать.

-r
--createrole

Разрешает новому пользователю создавать другие роли, что означает наделение привилегией CREATEROLE.

-R
--no-createrole

Запрещает пользователю создавать новые роли. Это поведение по умолчанию.

-s
--superuser

Создаваемая роль будет иметь права суперпользователя.

-S
--no-superuser

Новый пользователь не будет суперпользователем. Это поведение по умолчанию.

-V
--version

Вывести версию createuser и завершить выполнение.

--replication

Создаваемый пользователь будет наделён правом REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.

--no-replication

Создаваемый пользователь не будет иметь привилегии REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.

-?
--help

Вывести помощь по команде createuser.

createuser также принимает из командной строки параметры подключения:

-h сервер
--host=сервер

Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета.

-p порт
--port=порт

Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения.

-U имя_пользователя
--username=имя_пользователя

Имя пользователя для подключения (не имя создаваемого пользователя).

-w
--no-password

Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл .pgpass, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.

-W
--password

Принудительно запрашивать пароль перед подключением к базе данных.

Это несущественный параметр, так как createuser запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, createuser лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W, чтобы исключить эту ненужную попытку подключения.

Переменные окружения

PGHOST
PGPORT
PGUSER

Параметры подключения по умолчанию

Эта утилита, как и большинство других утилит PostgreSQL, также использует переменные среды, поддерживаемые libpq (см. Раздел 33.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;

В приведённом примере введённый пароль отображается лишь для отражения сути, на деле же он не выводится на экран. Как можно видеть, он шифруется прежде чем передаётся в команде клиенту.

См. также

dropuser, CREATE ROLE

Управление пользователями в PostgreSQL | Timeweb Cloud

PostgreSQL – система управления базами данных (СУБД) с открытым исходным кодом. Ее работа основана на стандартном языке запросов SQL. Системные администраторы выбирают этот инструмент по нескольким причинам: бесплатное использование, высокая производительность практически на любой аппаратной платформе. В нашем случае достаточно арендовать один из тарифов облачных баз данных у провайдера Timeweb Cloud.

В этом материале мы разберем, как создать и удалить пользователя в PostgreSQL, настроить права доступа, как использовать учетную запись на практике (на примере создания резервных копий). Отметим, что приведенные в статье процедуры выполняются в оболочке PostgreSQL. Ее можно запустить от имени аккаунта postgres:

su – postgres

При выдаче ошибки о недостаточных правах – повысьте их командой sudo su или su. Теперь можно стартовать саму командную оболочку:

$ psql -Upostgres template1

где template1 – это шаблонный пример БД, в своем случае укажите любой другой. Работа будет идти под учеткой postgres. Перед дальнейшими действиями просмотрим список уже существующих пользователей СУБД:

=# select * from pg_user;

Создадим новый аккаунт

Первое, что нам понадобится сделать – создать пользователя с паролем. Также надо назначить ему определенные привилегии через настройку в файле pg_hba.conf.

Шаг 1. Создадим пользователя

Зададим роль пользователя, пример команды из оболочки SQL:

=# CREATE USER user123 WITH PASSWORD 'myPassword';

То же, но при помощи командной строки Linux:

createuser -P user123

Шаг 2. Назначим права для операций с БД

Права зададим командой:

=# GRANT ALL PRIVILEGES ON DATABASE "database1" to user123;

Теперь можно активировать подключение к базе:

=# \c database1

Зададим права на работу с таблицами в рассматриваемой нами БД database1 и учетке user123:

database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "user123";

Отметим, что по умолчанию система настроена на схему public, но пользователю доступно ее изменение и выбор новой.

При назначении прав есть возможность указать определенную таблицу:

database1=# GRANT ALL PRIVILEGES ON TABLE table1 IN SCHEMA public TO "user123";

Пользователь PostgreSQL создан, можно закрывать оболочку и работать дальше:

database1=# \q

Шаг 3. Настроим файл pg_hba.conf

Проверим, какие привилегии заданы без изменения настроек. Они записаны в файле pg_hba.conf. Откроем его на редактирование:

vi /var/lib/pgsql/12/data/pg_hba.conf

Следующий шаг управления пользователем PostgreSQL – добавление прав новому аккаунту:

# IPv4 local connections:
host    all             user123           127.0.0.1/32            md5

Команда позволяет пользователю с именем user123 подключаться к любым базам, размещенным на сервере. Важно внести указанную информацию выше строки, имеющейся по умолчанию:

host    all             all             127.0.0.1/32            ident

Чтобы настройки применились, перезапустим службу:

systemctl restart postgresql

В этом примере речь идет о СУБД PostgreSQL12.

Шаг 4. Протестируем работоспособность БД

Проверим подключение только что созданного пользователя:

psql -Uuser123 template1 -h227.0.0.1

Настроим права доступа к БД через группу

Первое действие – создадим групповую роль:

=# CREATE ROLE "myRole" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

Следующим шагом внесем в нее нашего пользователя user123:

=# GRANT "myRole" TO user123;

Теперь можно подключаться к БД:

=# \c database1

И настроить привилегии для группы myRole:

database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO GROUP "myRole";

Отредактируем пользователя

Перенастроить систему так же просто, как создать пользователя администратора. Для примера изменим пароль ранее созданного нами аккаунта. Выполняется это одной командой:

=# ALTER USER postgres PASSWORD 'password'

Та же операция доступна и в командной строке Linux:

sudo -u postgres psql -U postgres -d postgres -c "ALTER USER postgres PASSWORD 'password'"

Удалим аккаунт и группу

Команда для удаления пользователя выглядит так:

=# DROP USER user123;

Вместо удаления можно ограничить аккаунт в правах:

database1=# REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM "user123";

Назначим особые привилегии существующему аккаунту

При управлении пользователями и полномочиями в СУБД PostgreSQL можно задавать как «полные» права ALL PRIVILEGES, так и особые:

=# GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO "user123";

Приведенный пример разрешает пользователю user123 считывать, редактировать и добавлять новые данные. Но удалять ничего нельзя, такие операции команда запрещает. Если требуется назначить права для работы с конкретной таблицей, команда примет такой вид:

database1=# GRANT ALL PRIVILEGES ON table_users TO "user123";

Создадим учетку для резервирования БД

Создавать резервные копии рекомендуем с минимальными правами. Создадим роль пользователя на чтение PostgreSQL для выполнения процедуры:

=# CREATE USER bkpuser WITH PASSWORD 'bkppasswd';

Здесь мы создали учетку bkpuser и задали ей пароль bkppasswd, их можно заменить на свои. Следом активируем возможность подключаться к базе:

=# GRANT CONNECT ON DATABASE database TO bkpuser;

Можно подключиться к БД:

=# \c database

И предоставлять требуемые права:

=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO bkpuser;

В этом примере использована схема public, ее можно заменить на другую.

Подробнее о резервном копировании PostgreSQL мы писали в статье Дампы в PostgreSQL: резервное копирование и восстановление.

Выводы

Мы завершили рассмотрение методики, как создавать пользователей PostgreSQL через консоль и настраивать их права. Иногда удобнее работать через приложения с графическим интерфейсом вроде pgAdmin, это на выбор пользователя. Поэкспериментировать без риска повредить рабочие БД проще на арендованных мощностях провайдера Timeweb Cloud.

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать. 

PostgreSQL: Документация: 8.0: ALTER USER

Документация → PostgreSQL 8.0

Поддерживаемые версии:

Текущий
(15)

/

14

/

13

/

12

/

11

Разрабатываемые версии:

16

/
devel

Неподдерживаемые версии:

10

/
9,6

/
9,5

/
9. 4

/
9.3

/
9.2

/
9.1

/
9,0

/
8.4

/
8.3

/
8.2

/
8.1

/
8,0

/
7.4

/
7.3

/
7.2

/
7.1

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

Имя

ALTER USER — изменить пользователя базы данных
счет

Сводка

ИЗМЕНИТЬ имя ПОЛЬЗОВАТЕЛЯ [[С] вариант [ ... ] ]
где вариант может быть:
    СОЗДАТЬ БД | NOCREATEDB
    | СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ | NOCREATEUSER
    | [ ЗАШИФРОВАНО | НЕЗАШИФРОВАННЫЙ ] PASSWORD 'пароль'
    | ДЕЙСТВИТЕЛЬНО ДО 'abstime'
ALTER USER name RENAME TO новое имя
ALTER USER имя SET параметр { TO | = } { значение | ПО УМОЛЧАНИЮ }
ALTER USER имя RESET параметр
 

Описание

ALTER USER изменяет атрибуты
учетная запись пользователя PostgreSQL.
Атрибуты, не упомянутые в команде, сохраняют свои прежние значения.
настройки.

Первый вариант этой команды, указанный в синопсисе
изменяет определенные привилегии каждого пользователя и параметры аутентификации.
(Подробности см. ниже.) Суперпользователи базы данных могут изменить любой из
эти настройки для любого пользователя. Обычные пользователи могут изменять только свои
собственный пароль.

Второй вариант изменяет имя пользователя. Только
Суперпользователь базы данных может переименовывать учетные записи пользователей. Текущая сессия
пользователя нельзя переименовать. (Подключитесь как другой пользователь, если вам нужно
сделать это.) Поскольку MD5-шифрование
пароли используют имя пользователя в качестве криптографической соли, переименовывая
пользователь очищает свой пароль MD5.

Третий и четвертый вариант изменяют сессию пользователя
по умолчанию для указанной переменной конфигурации. Всякий раз, когда пользователь
впоследствии запускает новый сеанс, указанное значение становится
сеанс по умолчанию, переопределяющий любой параметр, присутствующий в
postgresql.conf или был получен
из командной строки постмастера.
Обычные пользователи могут изменить свои собственные настройки сеанса по умолчанию. Суперпользователи
может изменить чей-либо сеанс по умолчанию. Некоторые переменные не могут быть
установлен таким образом, или может быть установлен только суперпользователем.

Параметры

имя

Имя пользователя, чьи атрибуты должны быть
изменено.

CREATEDB
NOCREATEDB

Эти пункты определяют возможность пользователя создавать
базы данных. Если CREATEDB
указано, пользователю будет разрешено создавать свои собственные
базы данных. Использование NOCREATEDB будет
запретить пользователю создавать базы данных. (Если пользователь
также является суперпользователем, то эта настройка не имеет реального
эффект.)

CREATEUSER
NOCREATEUSER

Эти пункты определяют, разрешено ли пользователю
самому создавать новых пользователей. CREATEUSER также сделает пользователя
суперпользователь, который может отменить все ограничения доступа.

пароль

Новый пароль для этой учетной записи.

ЗАШИФРОВАННЫЙ
НЕЗАШИФРОВАННЫЙ

Эти ключевые слова определяют, сохраняется ли пароль
зашифрован в pg_shadow. (Видеть
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ
для получения дополнительной информации об этом выборе.)

абстайм

Дата (и, необязательно, время), когда это
срок действия пароля пользователя истекает. Чтобы установить пароль никогда
истекает, используйте «бесконечность».

новое имя

Новое имя пользователя.

параметр
значение

Установить сеанс этого пользователя по умолчанию для указанного
параметр конфигурации в заданное значение. Если используется значение ПО УМОЛЧАНИЮ или, что то же самое, СБРОС, пользовательская переменная
параметр удален, поэтому пользователь унаследует
общесистемная настройка по умолчанию в новых сеансах. Используйте RESET ALL, чтобы очистить все пользовательские настройки.
настройки.

См. КОМПЛЕКТ и
Раздел 16.4 для получения дополнительной информации
информация о разрешенных именах и значениях параметров.

Примечания

Использовать СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ
для добавления новых пользователей и DROP
USER для удаления пользователя.

ALTER USER не может изменить
групповое членство. Для этого используйте ALTER GROUP.

Предложение VALID UNTIL определяет
время истечения срока действия только для пароля, а не для учетной записи пользователя
как таковой . В частности,
время истечения срока действия не применяется при входе в систему с использованием
метод аутентификации без пароля.

Также можно привязать сеанс по умолчанию к определенному
базе данных, а не пользователю; см. ИЗМЕНЕНИЕ БАЗЫ ДАННЫХ. Пользовательский
настройки переопределяют настройки базы данных, если есть
конфликт.

Примеры

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

ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ davide С ПАРОЛЕМ 'hu8jmn3';
 

Изменить срок действия пароля пользователя:

ALTER USER manuel ДЕЙСТВИТЕЛЬНО ДО «31 января 2030 г.»;
 

Изменить срок действия пароля, указав, что
срок действия пароля должен истечь в полдень 4 мая 2005 г. с использованием времени
зона, которая на один час опережает UTC:

ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ chris ДЕЙСТВИТЕЛЬНО ДО '4 мая 12:00:00 2005 +1';
 

Сделать пароль действительным навсегда:

ALTER USER fred ДЕЙСТВИТЕЛЬНО ДО «бесконечности»;
 

Дайте пользователю возможность создавать других пользователей и новых
базы данных:

ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ мириам CREATEUSER CREATEDB;
 

Совместимость

Оператор ALTER USER является
Расширение PostgreSQL. SQL
стандарт оставляет определение пользователей на усмотрение
выполнение.

См. также

СОЗДАТЬ
ПОЛЬЗОВАТЕЛЬ, УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ,
SET

PostgreSQL: Документация: 8.

0: Пользователи и права доступа к базе данных

Документация → PostgreSQL 8.0

Поддерживаемые версии:

Текущий
(15)

/

14

/

13

/

12

/

11

Разрабатываемые версии:

16

/
devel

Неподдерживаемые версии:

10

/
9,6

/
9,5

/
9. 4

/
9.3

/
9.2

/
9.1

/
9,0

/
8.4

/
8.3

/
8.2

/
8.1

/
8,0

/
7.4

/
7.3

/
7.2

/
7.1

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

Содержание
17.1. База данных
Пользователи
17.2. Пользователь
Атрибуты
17.3. Группы
17.4. Привилегии
17.5. Функции и
Триггеры

Каждый кластер базы данных содержит набор пользователей базы данных. Те
пользователи отделены от пользователей, управляемых операционной системой
на котором работает сервер. Пользователи владеют объектами базы данных (для
например, таблицы) и может назначать привилегии для этих объектов
другие пользователи, чтобы контролировать, кто имеет доступ к какому объекту.

В этой главе описывается, как создавать и управлять пользователями и
вводит систему привилегий. Больше информации о
различные типы объектов базы данных и эффекты привилегий
можно найти в главе 5.

Пользователи базы данных концептуально полностью отделены от
пользователей операционной системы. На практике может быть удобно
вести переписку, но это не обязательно. База данных
имена пользователей являются глобальными для всей установки кластера базы данных
(а не для каждой отдельной базы данных). Для создания пользователя используйте
СОЗДАТЬ ПОЛЬЗОВАТЕЛЬСКИЙ SQL
команда:

Создайте имя пользователя;
 

имя соответствует правилам для
Идентификаторы SQL: либо без прикрас без спецсимволов,
или в двойных кавычках. Чтобы удалить существующего пользователя, используйте аналогичный
УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ
команда:

УДАЛИТЬ имя ПОЛЬЗОВАТЕЛЯ;
 

Для удобства программы createuser и dropuser представлены в виде оболочек
вокруг этих команд SQL, которые можно вызывать из оболочки
командная строка:

создайте имя пользователя
имя дроп-пользователя
 

Чтобы определить набор существующих пользователей, просмотрите
системный каталог pg_user, для
пример

ВЫБЕРИТЕ имя пользователя ИЗ pg_user;
 

Метакоманда \du программы psql также полезна для вывода списка
существующих пользователей.

Для начальной загрузки системы базы данных
инициализированная система всегда содержит одного предопределенного пользователя. Этот
пользователь будет иметь фиксированный идентификатор 1, и по умолчанию (если не изменено
при запуске initdb) он будет иметь
то же имя, что и у пользователя операционной системы, который инициализировал
кластер базы данных. Обычно имя этого пользователя
постгрес. Для того, чтобы создать больше
пользователей, которых вы сначала должны подключить в качестве этого начального пользователя.

Для подключения к
сервер базы данных. Имя пользователя для использования в конкретной базе данных
соединение указывается клиентом, который инициирует
запрос на подключение в зависимости от приложения. Для
Например, программа psql использует
-U параметр командной строки, чтобы указать
пользователь для подключения как. Многие приложения используют имя
текущий пользователь операционной системы по умолчанию (включая createuser и psql).