Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос и привилегии / 1 сообщений из 1, страница 1 из 1
02.03.2016, 16:25
    #39183994
bobanman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос и привилегии
Всем доброго времени суток.

Вопрос следующий:

Есть юзер test_user , мне нужно при помощи sql-запроса узнать, есть ли у него привилегии INSERT и UPDATE на определенную схему, скажем test_schema .

Запрос два столбца [priv] - название привилегии и [has] - соответственно 1 - если привилегия есть и 0 - если привилегии нет. Сочинил я что-то типа такого:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
                    select
                        CONCAT_WS(' ', p.PRIVILEGE_TYPE, 'ON', CONCAT('test_schema', '.', '*')) AS priv
                        , if(ifnull(GRANTEE, 1), 0, 1) has
                    from (select 'INSERT' PRIVILEGE_TYPE union select 'UPDATE') p
                    left join
                    (select * from INFORMATION_SCHEMA.SCHEMA_PRIVILEGES WHERE
                        GRANTEE=CONCAT('\'',REPLACE(CURRENT_USER(),'@','\'@\''),'\'')
                        AND TABLE_SCHEMA = 'test_schema') up using(PRIVILEGE_TYPE);



Возвращает эта штука что-то типа такого:

priv has'INSERT ON test_schema.*' '1''UPDATE ON test_schema.*' '0'

Но вот проблема, этот запрос не покрывает унаследованных привилегий. Допустим если пользователю test_user выдать такую привилегию

Код: sql
1.
GRANT UPDATE ON *.* TO 'test_user';



то во втором столбце второй строки все еще будет 0 хотя по факту он может апдейтить все что хочет.

Вопрос, как переписать данный запрос, чтобы он покрыл все кейсы, и возвращал 0 исключительно тогда, когда у пользователя нет прав апдейтить в схеме test_schema . Или может есть в MySql какая-то волшебная умная функция типа HAS_PERMS_BY_NAME в MS Sql.

Заранее благодарен.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос и привилегии / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]