172 похожих чатов

Привет, народ. Никак не могу понять, как мне посмотреть права, которые

есть у какой-либо учётки (роли) в PostgreSQL?
В MySQL всё просто: SHOW GRANTS FOR <юзер>. Как быть здесь?

27 ответов

33 просмотра

SELECT * FROM information_schema.role_table_grants WHERE grantee = юзер;

Victor- Автор вопроса

SELECT * FROM information_schema.role_table_grant...

Пробовал. Там ничего нет, а права есть.


SELECT * FROM information_schema.role_table_grant...

Пока выглядит как только для table-like objects (таблицы, view, сиквенсы) — но не для схем, баз, процэдур и функцый, PL/языков, доменов, типов, тэйблспейсов, fdw.

Victor- Автор вопроса
Ilya Anfimov
Пока выглядит как только для table-like objects (т...

Угу. Поэтому вопрос остаётся открытым

Victor
Пробовал. Там ничего нет, а права есть.

Если это table-like — то есть во-первых неявные дефолты для роли public, во-вторых — лучшэ смотреть в information_schema.table_privileges по-моему, в-третьих — такой запрос не смотрит на роли, в которых эта роль состоит. А, плюс у овнера все права на свои объекты.

Victor
Угу. Поэтому вопрос остаётся открытым

По-моему, проще всего — pg_dump -s посмотреть. (По крайней мере, я чаще всего так делаю, если что-то не очень понятно).

Victor- Автор вопроса
Ilya Anfimov
По-моему, проще всего — pg_dump -s посмотреть. (П...

Хотя это и смешно, но сделал. Дамп есть, прав в нём нет, делал так: pg_dump -s имя_бд

Victor
Хотя это и смешно, но сделал. Дамп есть, прав в нё...

Что значит нет? grep этой роли что даёт? grep ролей, в которых эта роль что даёт? Вы учитываете список дефолтных привилегий для public (CONNECT+TEMPORARY для баз, EXECUTE для процэдур и функцый, USAGE для языков, типов и доменов типов? И вообще, почему думаете, что какие-то привилегии есть (какие команды выполняли с каким результатом)?

Victor- Автор вопроса
Ilya Anfimov
Что значит нет? grep этой роли что даёт? grep ро...

Я ничего не учитываю. У меня есть роль, которая ходит к базе, я хочу увидеть какие права есть у этой роли.

Victor
Хотя это и смешно, но сделал. Дамп есть, прав в нё...

А, дамп делали той жэ (или бОльшэй) версией pg_dump, что и сервер?

Victor
Я ничего не учитываю. У меня есть роль, которая хо...

Сначала придётся понять вот эту страничку https://www.postgresql.org/docs/15/ddl-priv.html (Это в любом случае, независимо от списков, которые вам кто-то покажэт). Когда поймёте — станет проще.

Victor- Автор вопроса
Ilya Anfimov
Что значит нет? grep этой роли что даёт? grep ро...

/usr/bin/pg_dumpall --globals-only вот это куда информативней.

Victor
/usr/bin/pg_dumpall --globals-only вот это куда ин...

Ну, тожэ полезно. Но я рассчитывал, что это (список ролей, которые содержат эту роль) ты и так знаешь.

В PG проще обратную задачу решить - проверять объекты на наличие грантов к ним https://sqlize.online/sql/psql15/b3e86646acb10f0c23182836ca2db485/

Victor- Автор вопроса
Nick Nalbantov
В PG проще обратную задачу решить - проверять объе...

Проще это когда SHOW GRANTS FOR USER 'имя_юзера'. А всё остальное.... не буду никого обижать.

Victor
Я ничего не учитываю. У меня есть роль, которая хо...

А всяких там (в psql): \dp \ddp \drds \duS+ \l и т.п. Вам не хватит? Если нет — можно либо поискать готовые запросы на эту тему, либо "содрать" используемые этими метакомандами (с помощью \set ECHO_HIDDEN on ) и адаптировать под себя.

Victor- Автор вопроса
Yaroslav Schekin
А всяких там (в psql): \dp \ddp \drds \duS+ \l и т...

Можно даже на Луну слетать. Задача выглядит простой, а вот реализация... Меня на самом деле другое поражает. Неужели никому не надо, чтобы была простая и понятная команда просмотра прав? Видимо нет. Печалька :(

Victor
Можно даже на Луну слетать. Задача выглядит просто...

Вся информация о правах есть в системных каталогах: https://postgrespro.ru/docs/postgresql/15/catalogs-overview

Victor- Автор вопроса
Владислав Макаров
Вся информация о правах есть в системных каталогах...

Знаю знаю. Вся информация есть в документации. Ну если на меня это повесят, конечно, прочитаю и разберусь. Сейчас абсолютно не до этого. Пока дампы рулят :)

Victor
Можно даже на Луну слетать. Задача выглядит просто...

Хмм... так хватит или нет? Если да — Ваша задача решена. Если нет — чего не хватает? > Неужели никому не надо, чтобы была простая и понятная команда просмотра прав? Приходили такие люди в -hackers, да, и неоднократно (даже с Proof-Of-Concept patches). Пока никто из них успеха не добился, насколько я помню. ;(

Yaroslav Schekin
Хмм... так хватит или нет? Если да — Ваша задача р...

Не помню точно, но по вроде кейс был такой: У владельца схемы отняли на нее права, а штатные вьюхи ничего не показывали до и после

Сергей
Не помню точно, но по вроде кейс был такой: У вла...

Разве я советовал какие-то "штатные вьюхи"? ;) Если Вы про information_schema, там много что сделано "на отшибись" — лишь бы формально ISO SQL соответствовало, да и ладно (поэтому большинства специфических для PostgreSQL вещей там просто не видно).

Yaroslav Schekin
Разве я советовал какие-то "штатные вьюхи"? ;) Есл...

Так вопрос был почему это до сих пор не реализована в качестве штатных вьюх и надо костылить, по моему функционал достаточно нужный.

Так ответ — потому что в psql есть соответствующие метакоманды, а проблемы тех, кто не пользуется единственным официальным клиентом, PostgreSQL hackers в общем и среднем волнуют меньше прошлогоднего снега. ;) "Что-нибудь не доступно?" ©

Yaroslav Schekin
Так ответ — потому что в psql есть соответствующие...

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

Сергей
Тут странная картина - есть вьюхи которые якобы по...

Я Вам ответил на все (пока что) заданные вопросы, на самом деле (в т.ч. и почему такая "странная картина").

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта