есть у какой-либо учётки (роли) в PostgreSQL?
В MySQL всё просто: SHOW GRANTS FOR <юзер>. Как быть здесь?
SELECT * FROM information_schema.role_table_grants WHERE grantee = юзер;
Пробовал. Там ничего нет, а права есть.
Пока выглядит как только для table-like objects (таблицы, view, сиквенсы) — но не для схем, баз, процэдур и функцый, PL/языков, доменов, типов, тэйблспейсов, fdw.
Угу. Поэтому вопрос остаётся открытым
Если это table-like — то есть во-первых неявные дефолты для роли public, во-вторых — лучшэ смотреть в information_schema.table_privileges по-моему, в-третьих — такой запрос не смотрит на роли, в которых эта роль состоит. А, плюс у овнера все права на свои объекты.
По-моему, проще всего — pg_dump -s посмотреть. (По крайней мере, я чаще всего так делаю, если что-то не очень понятно).
Хотя это и смешно, но сделал. Дамп есть, прав в нём нет, делал так: pg_dump -s имя_бд
Что значит нет? grep этой роли что даёт? grep ролей, в которых эта роль что даёт? Вы учитываете список дефолтных привилегий для public (CONNECT+TEMPORARY для баз, EXECUTE для процэдур и функцый, USAGE для языков, типов и доменов типов? И вообще, почему думаете, что какие-то привилегии есть (какие команды выполняли с каким результатом)?
Я ничего не учитываю. У меня есть роль, которая ходит к базе, я хочу увидеть какие права есть у этой роли.
А, дамп делали той жэ (или бОльшэй) версией pg_dump, что и сервер?
Сначала придётся понять вот эту страничку https://www.postgresql.org/docs/15/ddl-priv.html (Это в любом случае, независимо от списков, которые вам кто-то покажэт). Когда поймёте — станет проще.
/usr/bin/pg_dumpall --globals-only вот это куда информативней.
Ну, тожэ полезно. Но я рассчитывал, что это (список ролей, которые содержат эту роль) ты и так знаешь.
В PG проще обратную задачу решить - проверять объекты на наличие грантов к ним https://sqlize.online/sql/psql15/b3e86646acb10f0c23182836ca2db485/
Проще это когда SHOW GRANTS FOR USER 'имя_юзера'. А всё остальное.... не буду никого обижать.
А всяких там (в psql): \dp \ddp \drds \duS+ \l и т.п. Вам не хватит? Если нет — можно либо поискать готовые запросы на эту тему, либо "содрать" используемые этими метакомандами (с помощью \set ECHO_HIDDEN on ) и адаптировать под себя.
Можно даже на Луну слетать. Задача выглядит простой, а вот реализация... Меня на самом деле другое поражает. Неужели никому не надо, чтобы была простая и понятная команда просмотра прав? Видимо нет. Печалька :(
Вся информация о правах есть в системных каталогах: https://postgrespro.ru/docs/postgresql/15/catalogs-overview
Знаю знаю. Вся информация есть в документации. Ну если на меня это повесят, конечно, прочитаю и разберусь. Сейчас абсолютно не до этого. Пока дампы рулят :)
Хмм... так хватит или нет? Если да — Ваша задача решена. Если нет — чего не хватает? > Неужели никому не надо, чтобы была простая и понятная команда просмотра прав? Приходили такие люди в -hackers, да, и неоднократно (даже с Proof-Of-Concept patches). Пока никто из них успеха не добился, насколько я помню. ;(
Не помню точно, но по вроде кейс был такой: У владельца схемы отняли на нее права, а штатные вьюхи ничего не показывали до и после
Разве я советовал какие-то "штатные вьюхи"? ;) Если Вы про information_schema, там много что сделано "на отшибись" — лишь бы формально ISO SQL соответствовало, да и ладно (поэтому большинства специфических для PostgreSQL вещей там просто не видно).
Так вопрос был почему это до сих пор не реализована в качестве штатных вьюх и надо костылить, по моему функционал достаточно нужный.
Так ответ — потому что в psql есть соответствующие метакоманды, а проблемы тех, кто не пользуется единственным официальным клиентом, PostgreSQL hackers в общем и среднем волнуют меньше прошлогоднего снега. ;) "Что-нибудь не доступно?" ©
Тут странная картина - есть вьюхи которые якобы показывают права, но они ничего не показывают на самом деле) Решение понятно что найти можно))
Я Вам ответил на все (пока что) заданные вопросы, на самом деле (в т.ч. и почему такая "странная картина").
Обсуждают сегодня