
В PostgreSQL каждый пользователь представляет собой роль, которая может иметь права на подключение к базе данных, выполнение команд и управление другими объектами. Для администратора важно уметь просматривать текущий список пользователей, чтобы контролировать доступ, назначать привилегии и отслеживать изменения в системе безопасности.
Для просмотра только тех пользователей, которые могут подключаться к базе данных, стоит использовать фильтр: SELECT rolname FROM pg_roles WHERE rolcanlogin = true;. Такой запрос помогает быстро определить список активных учетных записей, не затрагивая технические роли, используемые внутренними механизмами PostgreSQL.
Кроме SQL-запросов, список пользователей можно получить и через метакоманду psql \du или \dg, которая отображает роли с их атрибутами в удобном табличном виде. Этот способ особенно полезен при администрировании через терминал.
Знание этих инструментов позволяет поддерживать прозрачность и безопасность в управлении доступом к PostgreSQL, а также своевременно выявлять лишние или неправильно настроенные учетные записи.
Просмотр пользователей через psql с помощью команды \du
Команда \du в консоли psql позволяет вывести список всех ролей PostgreSQL, включая их права и принадлежность к группам. Для запуска команды необходимо подключиться к базе данных под пользователем, имеющим права на просмотр системного каталога.
После входа в консоль psql выполните:
\du
При работе на удалённом сервере подключение выполняется командой psql -h hostname -U username -d dbname, после чего команда \du будет доступна в интерактивной сессии. Это удобный способ быстро проверить структуру прав доступа без обращения к системным таблицам.
В PostgreSQL информация о всех ролях, включая пользователей и группы, хранится в системной таблице pg_roles. Доступ к ней есть у всех суперпользователей и владельцев базы данных. Таблица содержит ключевые поля: rolname – имя роли, rolsuper – флаг суперпользователя, rolcreaterole – право создания ролей, rolcreatedb – право создания баз данных, rolcanlogin – возможность входа в систему.
Чтобы получить список всех пользователей, можно выполнить запрос:
SELECT rolname FROM pg_roles WHERE rolcanlogin = true;
Для получения расширенной информации удобно использовать:
SELECT rolname, rolsuper, rolcreatedb, rolcanlogin FROM pg_roles ORDER BY rolname;
Результат запроса позволяет быстро определить привилегии каждой роли. Такой способ удобен для администрирования, автоматизации проверок и аудита прав доступа без необходимости входить в интерактивную консоль psql.
Отображение пользователей и их ролей с помощью SQL-запроса

Список пользователей и их ролей можно получить напрямую из системных представлений PostgreSQL. Основной источник данных – представление pg_roles, в котором хранятся все роли, включая как обычных пользователей, так и служебные учетные записи.
SELECT rolname AS "Имя пользователя",
rolsuper AS "Суперпользователь",
rolcreaterole AS "Может создавать роли",
rolcreatedb AS "Может создавать базы данных",
rolcanlogin AS "Может входить в систему"
FROM pg_roles
ORDER BY rolname;
Результат содержит ключевые параметры каждой роли:
| Колонка | Описание |
|---|---|
rolname |
Имя роли или пользователя |
rolsuper |
Признак суперпользователя |
rolcreaterole |
Разрешение на создание новых ролей |
rolcreatedb |
Разрешение на создание баз данных |
rolcanlogin |
Определяет, может ли роль выполнять вход |
Чтобы отобразить роли, назначенные пользователю, можно использовать дополнительный запрос, связывающий pg_roles и pg_auth_members:
SELECT r.rolname AS "Роль",
m.rolname AS "Членство"
FROM pg_auth_members am
JOIN pg_roles r ON am.roleid = r.oid
JOIN pg_roles m ON am.member = m.oid
ORDER BY r.rolname;
Такой запрос помогает определить, какие пользователи входят в конкретные группы ролей и какие права они наследуют.
Проверка прав и атрибутов пользователей в Postgresql

Для анализа уровня доступа и характеристик пользователей в PostgreSQL применяются системные представления и SQL-запросы, отображающие привилегии, флаги и роли.
Основные атрибуты пользователя можно просмотреть через представление pg_roles. Оно содержит ключевые поля:
rolname– имя роли или пользователя;rolsuper– флаг суперпользователя (true/false);rolcreaterole– разрешение на создание новых ролей;rolcreatedb– разрешение на создание баз данных;rolcanlogin– возможность входа в систему (логин);rolreplication– доступ к функциям репликации;rolvaliduntil– срок действия пароля, если установлен.
Для получения списка пользователей с их атрибутами выполните запрос:
SELECT rolname, rolsuper, rolcreatedb, rolcreaterole, rolcanlogin, rolreplication, rolvaliduntil
FROM pg_roles
ORDER BY rolname;
Чтобы просмотреть права доступа к объектам базы данных, используйте представление information_schema.role_table_grants:
SELECT grantee, table_schema, table_name, privilege_type
FROM information_schema.role_table_grants
ORDER BY grantee;
Если требуется определить, какие роли назначены конкретному пользователю, используйте системную таблицу pg_auth_members в связке с pg_roles:
SELECT r.rolname AS role_name, m.rolname AS member_name
FROM pg_auth_members am
JOIN pg_roles r ON r.oid = am.roleid
JOIN pg_roles m ON m.oid = am.member
ORDER BY role_name;
Проверку активных подключений с именами пользователей можно выполнить через pg_stat_activity:
SELECT usename, datname, client_addr, state
FROM pg_stat_activity
ORDER BY usename;
Такие запросы позволяют быстро определить, какие пользователи обладают повышенными правами, кто активно подключен к системе и какие роли назначены каждому пользователю. Это облегчает аудит безопасности и контроль доступа в PostgreSQL.
Фильтрация и сортировка списка пользователей по условиям

Для выборки пользователей PostgreSQL с заданными параметрами можно использовать SQL-запросы к системной таблице pg_roles. Например, чтобы вывести только активные роли без атрибута rolcanlogin = false:
SELECT rolname FROM pg_roles WHERE rolcanlogin = true;
Если необходимо просмотреть только суперпользователей, используется условие:
SELECT rolname FROM pg_roles WHERE rolsuper = true;
Для исключения служебных ролей, начинающихся с префикса pg_, удобно применить фильтр с оператором NOT LIKE:
SELECT rolname FROM pg_roles WHERE rolname NOT LIKE 'pg_%';
Чтобы отсортировать результат по имени пользователя в алфавитном порядке, добавляется выражение ORDER BY:
SELECT rolname FROM pg_roles ORDER BY rolname ASC;
Для анализа по дате создания или другим параметрам можно использовать представление pg_authid (при наличии прав суперпользователя), где доступно больше служебной информации. Например, сортировка по дате изменения пароля:
SELECT rolname, rolvaliduntil FROM pg_authid ORDER BY rolvaliduntil DESC;
Комбинирование фильтрации и сортировки позволяет быстро находить нужных пользователей, например, всех неактивных с истекшим сроком пароля:
SELECT rolname FROM pg_authid WHERE rolcanlogin = false AND rolvaliduntil < now() ORDER BY rolvaliduntil;
Такие запросы удобны для аудита учетных записей и контроля состояния ролей в крупных системах.
Просмотр пользователей в графических интерфейсах pgAdmin и DBeaver
В pgAdmin для просмотра пользователей откройте подключение к серверу, перейдите в раздел "Login/Group Roles". Здесь отображается список всех пользователей и групп с указанием их ролей и атрибутов, таких как SUPERUSER, CREATEDB, CREATEROLE, LOGIN. Дополнительно можно открыть свойства конкретного пользователя, чтобы увидеть его членство в группах, привилегии и настройки пароля.
В DBeaver выберите подключение к нужной базе, раскройте дерево "Security" и перейдите в "Users". Список показывает имя пользователя, активность, дату создания и назначенные роли. Для детального анализа можно открыть свойства пользователя, где отображаются все привилегии на схемы и таблицы, а также информация о членстве в ролях.
Оба интерфейса позволяют экспортировать список пользователей в формате CSV или SQL для последующего анализа или резервного копирования. В pgAdmin экспорт осуществляется через правый клик по списку ролей с выбором "Backup/Export", в DBeaver – через "Export Data" после выделения нужных пользователей.
Для фильтрации и быстрого поиска используйте встроенные строки поиска в разделе пользователей. В pgAdmin можно фильтровать по имени или типу роли, а в DBeaver – задавать условия поиска по имени, роли или дате создания.
Вопрос-ответ:
Как получить список всех пользователей PostgreSQL через командную строку psql?
Для просмотра пользователей через psql используется команда \du. Она выводит таблицу с именами пользователей, их ролями и атрибутами. Для запуска команды необходимо подключиться к базе с помощью psql, затем просто ввести \du и нажать Enter. Таблица покажет, кто имеет права суперпользователя, возможность создавать базы и подключаться к серверу.
Можно ли посмотреть пользователей и их роли с помощью SQL-запроса?
Да, список пользователей и их роли можно получить через системную таблицу pg_roles. Например, запрос SELECT rolname, rolsuper, rolcreaterole, rolcreatedb FROM pg_roles; покажет имена пользователей, наличие прав суперпользователя, возможность создавать роли и базы данных. Такой способ удобен, если нужно использовать данные в скриптах или фильтровать по атрибутам.
Какие графические инструменты позволяют просматривать пользователей PostgreSQL?
Графические интерфейсы pgAdmin и DBeaver предоставляют возможность просмотра пользователей без написания SQL-запросов. В pgAdmin нужно открыть раздел "Login/Group Roles" в панели управления сервером, а в DBeaver пользователи отображаются в разделе "Security" → "Users" конкретной базы данных. В обоих случаях можно видеть роли, права и состояние учетных записей.
Можно ли фильтровать список пользователей по определенным атрибутам?
Да, как в SQL, так и в графических интерфейсах можно фильтровать пользователей. В SQL используется условие WHERE, например SELECT rolname FROM pg_roles WHERE rolsuper = true; для отображения только суперпользователей. В pgAdmin и DBeaver доступны встроенные фильтры и сортировка по имени, роли или наличию прав.
Как узнать, какие права имеет конкретный пользователь PostgreSQL?
Для проверки прав можно использовать команду \du имя_пользователя в psql, или SQL-запрос SELECT * FROM pg_roles WHERE rolname='имя_пользователя';. В графических интерфейсах pgAdmin и DBeaver информация отображается в свойствах пользователя: роли, возможность создавать базы, подключаться к серверу, и другие атрибуты.
Как узнать, какие пользователи существуют в базе PostgreSQL через pgAdmin?
В pgAdmin список пользователей отображается в разделе «Login/Group Roles». Для этого нужно подключиться к серверу, раскрыть дерево объекта «Login/Group Roles» и просмотреть всех пользователей. В интерфейсе можно увидеть их роли, наличие прав суперпользователя, возможность создавать базы данных и роли. Это позволяет быстро оценить состав пользователей без использования командной строки.
Можно ли фильтровать пользователей PostgreSQL по определённым атрибутам через SQL?
Да, используя запрос к системной таблице pg_roles, можно отбирать пользователей по нужным признакам. Например, запрос SELECT rolname FROM pg_roles WHERE rolcreatedb = true; вернёт только тех пользователей, которым разрешено создавать базы данных. Аналогично можно фильтровать по правам суперпользователя или созданию ролей. Такой подход полезен для анализа прав пользователей и контроля доступа в базе.
