/
Вопросы и ответы
/
SQL
/

Как посмотреть пользователей в postgresql

Как посмотреть пользователей в postgresql

3 года назад

Nikolai Gagarinov

Ответы

0

Для просмотра пользователей в PostgreSQL можно использовать следующие команды:

  1. Чтение списка всех пользователей:
1
2
SELECT usename
FROM pg_user;
  1. Просмотр списка пользователей с дополнительной информацией:
1
2
SELECT *
FROM pg_user;
  1. Проверка привилегий и ролей для конкретного пользователя:
1
2
3
SELECT *
FROM information_schema.role_table_grants
WHERE grantee = 'имя_пользователя';
  1. Просмотр списка всех ролей, к которым принадлежит пользователь:
1
2
3
4
5
SELECT r.rolname
FROM pg_roles r
JOIN pg_auth_members m ON r.oid = m.roleid
JOIN pg_roles r2 ON r2.oid = m.member
WHERE r2.rolname = 'имя_пользователя';
  1. Просмотр списка баз данных, к которым имеет доступ пользователь:
1
2
3
SELECT datname
FROM pg_database
WHERE has_database_privilege('имя_пользователя', datname, 'CONNECT');
  1. Проверка привилегий для конкретного пользователя:
1
2
3
SELECT grantee, table_name, privilege_type
FROM information_schema.table_privileges
WHERE grantee = 'имя_пользователя';

Таким образом, вы можете использовать эти запросы для просмотра пользователей в PostgreSQL и их привилегий.

3 года назад

Elena Gromova

0

В консоли psql список пользователей (ролей) показывает команда:

1
\du

Она выводит имена ролей, их атрибуты (суперпользователь, право создавать базы, вход) и группы, в которые они входят.

Через SQL-запрос

Работает в любом клиенте — DBeaver, pgAdmin, DataGrip:

1
2
3
SELECT rolname, rolsuper, rolcreatedb, rolcanlogin
FROM pg_roles
ORDER BY rolname;

В PostgreSQL пользователь и роль — одно и то же: пользователь — это роль с правом входа. Только тех, кто может подключаться:

1
SELECT rolname FROM pg_roles WHERE rolcanlogin;

Представление pg_user из старых инструкций показывает только роли с правом входа — тот же список, что и запрос выше.

Кто подключён сейчас

1
2
3
SELECT usename, datname, client_addr, state
FROM pg_stat_activity
WHERE usename IS NOT NULL;

Текущий пользователь

1
SELECT current_user;

Права пользователя на таблицы

1
2
3
SELECT grantee, table_name, privilege_type
FROM information_schema.role_table_grants
WHERE grantee = 'app_user';

В psql то же показывает \dp имя_таблицы.

Как зайти в psql

1
psql -U postgres

На Linux часто нужно войти от системного пользователя postgres: sudo -u postgres psql.

Создание пользователей и права доступа разбирают в курсе «SQL для разработчиков».

7 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845