Для работы с базами данных в PostgreSQL предусмотрена иерархия пользователей с разными правами доступа. В этой статье мы рассмотрим способы их создания и изменения, а также объясним, как в PostgreSQL соотносятся понятия пользователей, групп и ролей.
Как создать пользователя в PostgreSQL?
Существует два основных способа создавать пользователей PostgreSQL: из консоли с помощью команды CREATE USER или из графического интерфейса pgAdmin с помощью SQL-запроса. Ниже мы рассмотрим подробнее каждый из вариантов.
Однако, чтобы не выдать никому лишних прав доступа и не поставить бизнес под угрозу, для создания пользователей мы советуем обращаться в «ДБ-сервис»: наши инженеры специализируются на работе с PostgreSQL и могу гарантировать защиту ваших данных.
CREATE USER
В PostgreSQL с помощью терминальной программы psql откройте командную строку. В ней выполните одну из следующих команд, где name и pass меняются на нужные значения:
Для создания суперпользователя:
CREATE USER name WITH PASSWORD 'pass' SUPERUSER;
Для создания обычного пользователя:
CREATE USER name WITH PASSWORD 'pass';
Для создания пользователя с дополнительными параметрами (например, лимит на число одновременных подключений к БД):
CREATE USER name WITH PASSWORD 'pass' CONNECTION LIMIT 5;
В графическом интерфейсе
Существует много программ с графическим интерфейсом для работы с PostgreSQL, однако наиболее распространенной считается pgAdmin. Алгоритм создания пользователя здесь следующий:
В pgAdmin подключитесь к БД, зайдите в раздел Login / Group Roles, вызовите контекстное меню и выберете Create — Login / Group Role.
В открывшемся окне во вкладке General введите имя пользователя и, по желанию, его описание в поле Comments.
Во вкладке Definition задайте пароль и, по желанию, срок его действия.
Во вкладке Privileges выставите с помощью тумблеров выдайте пользователю необходимый набор прав: возможность логиниться, создавать другие роли и базы и т. д.
Во вкладке Membership присвойте пользователю нужные роли, например — дефолтную для PostgreSQL роль pg_monitor, позволяющую просматривать разные таблицы и представления, связанные с мониторингом БД.
Во вкладке SQL приводятся SQL-команды, отвечающие за применение настроек, выполненных в предыдущих вкладках. От вас требуется лишь нажать Save, после чего пользователь будет создан и доступен в разделе Login / Group Roles.
Роли: пользователи и их группы в PostgreSQL
В современных версиях PostgreSQL понятие роли включает в себя и пользователей и их группы. Для создания ролей может использоваться как команда CREATE ROLE, так и CREATE USER.
CREATE ROLE как правило выполняется, когда нужно создать роль с правами Read Only — без возможности подключения к серверу PostgreSQL и внесения изменений в БД. CREATE USER же чаще выполняется, когда создается роль с возможностью входа в систему и выполнения операций в БД.
Как изменить пользователя в PostgreSQL?
Изменение пользователей в PostgreSQL включает в себя различные действия, такие как изменение пароля, удаление пользователей и предоставление им дополнительных привилегий.
Смена пароля
Пароль может меняться с помощью одного из трех вариантов:
Командой =# ALTER USER postgres PASSWORD 'password'
Запросом ввода пароля: =# \password postgres
Из консоли Linux: sudo -u postgres psql -U postgres -d postgres -c "ALTER USER postgres PASSWORD 'password'"
Удаление пользователей PostgreSQL
Пользователь PostgreSQL может быть удален и лишен прав с помощью выполнения определенных команд.
Удаление: =# DROP USER username;
Лишение прав: database1=# REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM "username";
Выдача особых прав
Кроме выдачи суперпользовательских прав ALL PRIVILEGES в PostgreSQL можно выдавать правда для конкретных операций и таблиц.
Чтобы выдать разрешение на получение, обновление и добавление данных, нужно выполнить: =# GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO "username";
Чтобы выдать набор прав для конкретной таблицы нужно выполнить: "database_name" =# GRANT ALL PRIVILEGES ON "table_nsme" TO "username";
Учетная запись для резервного копирования
Одно из правил резервного копирования заключается в подключении к БД с пользователя с минимальным уровнем доступа.
Создайте для этого специальную роль командой: =# CREATE USER "username" WITH PASSWORD "passwd";
Затем выдайте права на подключение к базе: =# GRANT CONNECT ON DATABASE database TO username;
Подключитесь к БД: =# \c database
Выдайте права public пользователю bkpuser, используя команду =# GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO bkpuser; По дефолту в PostgreSQL выставлена схема public; если вы планируете задействовать другую, измените в команде это значение.
Резюме
Подытоживая, еще раз отметим, что в PostgreSQL можно создавать пользователей, как из консоли, так и с помощью утилиты pgAdmin. И пользователи и их группы в современных версиях СУБД объединяет понятие ролей. Для определенных задач, например, резервного копирования, необходимо создавать специфические пользовательские роли с определенными правами доступа.
Нужна поддержка или планируете изменения в инфраструктуре?
Проблемы с производительностью, переход на PostgreSQL, нестабильная БД — у нас есть опыт, чтобы это исправить. Оставьте заявку — обсудим, чем можем помочь именно вам.
Круглосуточный контроль за состоянием вашей базы данных. Уведомления в случае отклонений, отчёты и превентивные меры. Обеспечиваем стабильность и безопасность.
Как создать или удалить пользователя в PostgreSQL? Как узнать пользователя PostgreSQL — подробнее про создание, удаление, изменение пользователей на нашем сайте.
Версия PostgreSQL играет важную роль в администрировании базы данных. От нее зависит поддерживаемый функционал, совместимость с приложениями и отсутствия уязвимостей.
Опыт работы: 13 лет опыта работы с базами данных, более 6 лет опыта работы архитектором БД и DBA. Опыт построения отказоустойчивых кластеров на базе СУБД PostgreSQL и GreenPlum 6x. Постоянный докладчик на Российских и международных IT конференциях.
Иван Чувашов
Ведущий инженер в Data Driven Lab / Сертифицированный администратор PostgreSQL (PostgresPro, 10 уровень «Эксперт»)
Список литературы:
1. Как создать пользователя в PostgreSQL. – Текст: электронный // selectel.ru: интернет-ресурс. 2. Как создать пользователя PostgreSQL: инструкция. – Текст: электронный // timeweb.cloud: интернет-ресурс. 3. PostgreSQL Basics: Roles and Privileges. – Текст: электронный // Redgate Hyb: интернет-ресурс. 4. PostgreSQL 16.1 Documentation. – Текст: электронный // The PostgreSQL Global Development Group: интернет-ресурс.