URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 8099
[ Назад ]

Исходное сообщение
"Как получить фильтрованный вывод о правах пользователя?"

Отправлено CHIM , 12-Сен-17 11:15 
Мучаюсь над проблемой получения информации о том есть ли права у пользователя на определённые команды к определённым таблицам. Например есть пользователь user и у него есть права на SELECT в таблице table1, а так же есть права на SELECT, DELETE в таблице table2. Как определить есть ли у пользователя права для удаления конкретно для таблицы table2?
Если использовать команду: "SHOW GRANTS FOR user; " то выводятся все привилегии пользователя, что в свою очередь трудно автоматически обработать(точнее я не представляю как из меняющегося вывода выбрать DELETE который будет относиться именно к таблице table2 и не перепутать с другими таблицами.)
Если использовать команду: "SELECT * FROM information_schema.user_privileges;"  то выводятся не все привилегии(в моём случае выводится только одна привилегия "USAGE"),
Если использовать команду "USE information_schema; SELECT TABLE_NAME, PRIVILEGES FROM COLUMNS;" то привилегии выводятся только те, которые совпадают со списком "select,insert,update,references" т.е. в моём случае DELETE здесь нет.
Неужели никак нельзя узнать есть ли определённые права у пользователя?

Содержание

Сообщения в этом обсуждении
"Как получить фильтрованный вывод о правах пользователя?"
Отправлено ACCA , 12-Сен-17 13:33 
Однострочником.

$ mysql --batch -u root -p --execute="SHOW GRANTS FOR user;" | grep table2


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


"Как получить фильтрованный вывод о правах пользователя?"
Отправлено CHIM , 12-Сен-17 14:41 
> Однострочником.
> $ mysql --batch -u root -p --execute="SHOW GRANTS FOR user;" | grep
> table2
> MySQL - дeбильная база, не занимайся в ней сложностями. Если появились такие
> вопросы - время уходить на что-то другое.

1. А есть ли возможность сделать это на PHP  с правами пользователя у которого я хочу проверить права?
2. И ещё вопрос. В postgresql это такую выборку проще делать?


"Как получить фильтрованный вывод о правах пользователя?"
Отправлено ACCA , 12-Сен-17 17:28 
> 1. А есть ли возможность сделать это на PHP  с правами
> пользователя у которого я хочу проверить права?

Попробуй, должно сработать. В комментариях в документации v5.7 по SHOW GRANTS есть пример на Perl. PDO цельнотянутый с DBI, так что переведёшь и на PHP.

> 2. И ещё вопрос. В postgresql это такую выборку проще делать?

SELECT has_table_privilege('joe', 'table2', 'DELETE');