Как получить фильтрованный вывод о правах пользователя?, 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, 13:33 , 12-Сен-17 (1)
Однострочником.$ mysql --batch -u root -p --execute="SHOW GRANTS FOR user;" | grep table2 MySQL - дeбильная база, не занимайся в ней сложностями. Если появились такие вопросы - время уходить на что-то другое.
- Как получить фильтрованный вывод о правах пользователя?, CHIM, 14:41 , 12-Сен-17 (2)
> Однострочником. > $ mysql --batch -u root -p --execute="SHOW GRANTS FOR user;" | grep > table2 > MySQL - дeбильная база, не занимайся в ней сложностями. Если появились такие > вопросы - время уходить на что-то другое.1. А есть ли возможность сделать это на PHP с правами пользователя у которого я хочу проверить права? 2. И ещё вопрос. В postgresql это такую выборку проще делать?
- Как получить фильтрованный вывод о правах пользователя?, ACCA, 17:28 , 12-Сен-17 (3)
> 1. А есть ли возможность сделать это на PHP с правами > пользователя у которого я хочу проверить права?Попробуй, должно сработать. В комментариях в документации v5.7 по SHOW GRANTS есть пример на Perl. PDO цельнотянутый с DBI, так что переведёшь и на PHP. > 2. И ещё вопрос. В postgresql это такую выборку проще делать? SELECT has_table_privilege('joe', 'table2', 'DELETE');
|