Список привилегий базы данных с помощью psql

Я посередине миграции сервера базы данных, и я не могу понять (после поиска в Интернете и поиска здесь), как я могу перечислить привилегии базы данных (или все привилегии на сервере) в PostgreSQL с помощью psql инструмент командной строки?

Я на Ubuntu 11.04, а моя версия PostgreSQL - 8.2.x.

86 голосов | спросил pedrosanta 3 PM000000110000002131 2011, 23:01:21

6 ответов


77
Postgres = > \ л
                                  Список баз данных
   Имя | Владелец | Кодировка | Составить | Ctype | Доступ к привилегии
----------- + ---------- + ---------- + ------------- + - ----------- + -----------------------
 postgres | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 |
 template0 | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | = c /postgres +
           | | | | | Postgres = CTC /Postgres
 шаблон1 | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | = c /postgres +
           | | | | | Postgres = CTC /Postgres

документы на GRANT дать объяснение, как интерпретировать вывод. Для конкретных привилегий в таблице текущей базы данных используйте \ z myTable.

ответил DrColossos 4 PM000000120000002331 2011, 12:24:23
67

возможно, вы имеете в виду перечисление пользователей и их привилегии для базы данных - я не могу сказать из вопроса:

Postgres = > \ их
                             Список ролей
    Имя роли | Атрибуты | Член
----------------- + -------------- + ----------------- -------------------------------
 dba | Создать роль | {Util_user, helpdesk_user, helpdesk_admin}
 helpdesk_admin | Не удается войти | {} Helpdesk_user
 helpdesk_user | Не удается войти | {} Helpdesk_reader
 домкрат | | {} Helpdesk_admin
 postgres | Суперпользователь | {}
                 : Создать роль
                 : Создать БД
ответил Jack Douglas 4 PM00000070000005331 2011, 19:59:53
32

Вы можете сделать это, выполнив следующие действия:

ВЫБОР получателя, privilege_type
FROM information_schema.role_table_grants
WHERE table_name = 'mytable'

Это дает вам такой вывод:

 введите описание изображения здесь>> </a> </p></div>
										<div class=ответил Himanshu Chauhan 18 +03002016-10-18T10:11:18+03:00312016bEurope/MoscowTue, 18 Oct 2016 10:11:18 +0300 2016, 10:11:18

7

A (возможно, очевидный) дополнительный шаг становится пользователем postgres, иначе вы можете получить ошибки о не существующих ролях.

sudo su - postgres
psql -l

или

PSQL
Postgres = > \ л
ответил Adam Shostack 18 FriEurope/Moscow2015-12-18T22:03:00+03:00Europe/Moscow12bEurope/MoscowFri, 18 Dec 2015 22:03:00 +0300 2015, 22:03:00
5

с помощью метакодов psql:

https://www.postgresql.org/docs/current/статическая /приложение-psql.html

Перемещение страницы с помощью Ctrl + F дает:

  

\ ddp [pattern]   Перечисляет настройки привилегий доступа по умолчанию.

     

\ dp [pattern] Отображает таблицы, представления и последовательности с их   связанные привилегии доступа.

     

\ l [+] [pattern] Перечислить базы данных на сервере и показать ....   привилегии доступа.

, также упомянутый выше, но не найденный со словом «привилегии» на странице руководства:

\ du + для ролей с логином и \ dg + для ролей без - будет иметь зарегистрированный "Member of, где вы найдете роли, предоставленные к ролям.

Я намеренно пропускаю функции и привилегии языка здесь, находясь в руководстве psql, как мало управляемый (и если вы используете эти привилегии, вы не придете сюда для получения рекомендаций). то же для пользовательских типов, доменов и т. д. - с помощью «+» после того, как мета-команда покажет вам привилегии, если это применимо.


немного экстремальный способ проверки привилегированных пользователей - это отбросить пользователя в транзакции, например:

s = # begin; drop user x;
НАЧАТЬ
Время: 0.124 мс
ОШИБКА: роль «x» не может быть отброшена, потому что от нее зависят некоторые объекты
DETAIL: привилегии для типа "SO dT"
привилегии для последовательности
привилегии для схемы bin
привилегии для таблицы xx
привилегии для таблицы "csTest"
привилегии для таблицы tmp_x
привилегии для таблицы s1
привилегии для теста таблицы
Время: 0.211 мс
s = # rollback;
ROLLBACK
Время: 0.150 мс

, когда список длиннее, чем N, (по крайней мере, в 9.3), предупреждение со списком привилегий свернуто, но вы все равно можете найти его в журналах ...

ответил Vao Tsun 25 PM000000120000002631 2017, 12:04:26
0

Undercovers psql использует следующий запрос при выпуске команды \ du.

SELECT r.rolname, r.rolsuper, r.rolinherit,
  r.rolcreaterole, r.rolcreatedb, r.rolcanlogin,
  r.rolconnlimit, r.rolvaliduntil,
  ARRAY (SELECT b.rolname
        FROM pg_catalog.pg_auth_members m
        JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
        WHERE m.member = r.oid) в качестве члена
, r.rolreplication
, r.rolbypassrls
FROM pg_catalog.pg_roles r
WHERE r.rolname! ~ '^ Pg_'
ORDER BY 1;
ответил Dennis 6 PMpFri, 06 Apr 2018 13:55:52 +030055Friday 2018, 13:55:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132