Как добавить нового пользователя в PostgreSQL

«Как добавить нового пользователя в PostgreSQL» — вопрос из категории Базы данных, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PostgreSQL для создания пользователя (роли с правом входа) используется команда CREATE ROLE или её псевдоним CREATE USER. Основное отличие — CREATE USER по умолчанию добавляет атрибут LOGIN.

Базовый синтаксис:

CREATE USER app_user WITH PASSWORD 'StrongPass123!';

Создание пользователя с расширенными правами: Часто пользователю приложения нужны права на конкретную базу данных.

-- 1. Создаём пользователя
CREATE USER deploy_user WITH PASSWORD 'DeploySecret456';

-- 2. Создаём базу данных (если её нет)
CREATE DATABASE myapp_prod OWNER deploy_user;

-- 3. Подключаемся к новой БД и даём полные права пользователю (хотя OWNER уже имеет их)
c myapp_prod
GRANT ALL ON SCHEMA public TO deploy_user;

Работа с привилегиями в инфраструктурном контексте (DevOps): В DevOps мы редко выполняем эти команды вручную. Мы используем:

  • Миграционные инструменты: Liquibase, Flyway, где создание пользователей и назначение прав — часть скриптов миграции.
  • Инфраструктура как код (IaC):

    • Terraform с провайдером PostgreSQL: позволяет декларативно управлять пользователями, базами данных и привилегиями.
      
      resource "postgresql_role" "app_user" {
      name     = "app_user"
      login    = true
      password = var.db_app_user_password
      }

    resource "postgresql_database" "app_db" { name = "myapp" owner = postgresql_role.app_user.name }

    
    *   **Ansible/Puppet/Chef:** модули для управления PostgreSQL.

Проверка:

-- Список всех ролей (пользователей)
du