Какая команда выводит список пользователей в PostgreSQL?

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

Ответ

В PostgreSQL управление пользователями и ролями — это часть настройки безопасности и доступа. Вот как я получаю эту информацию:

  1. Основной запрос для просмотра пользователей/ролей:

    SELECT usename AS role_name,
           usesuper AS is_superuser,
           usecreatedb AS can_create_db
    FROM pg_catalog.pg_user;

    Это показывает именно пользователей для входа.

  2. Более полный запрос к системному каталогу pg_roles: Он отображает все роли (которые могут быть как пользователями, так и группами).

    SELECT rolname, rolsuper, rolcreatedb, rolcanlogin
    FROM pg_roles
    WHERE rolcanlogin = true; -- чтобы показать только тех, кто может войти (пользователей)
  3. Практическое применение в DevOps: При настройке базы данных через скрипты инициализации (например, в Dockerfile или в задачах конфигурации) я создаю пользователей и назначаю права так:

    -- Скрипт инициализации (init.sql)
    CREATE USER app_user WITH PASSWORD '${APP_DB_PASSWORD}';
    GRANT CONNECT ON DATABASE my_app_db TO app_user;
    GRANT USAGE ON SCHEMA public TO app_user;
    GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;

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