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).