Краткая версия : как я могу написать процедуру SQL, чтобы перечислить, к какой из нескольких таблиц в базе данных MySQL имеет доступ конкретный пользователь ?
Более длинная версия :
Я пишу многопользовательское приложение, которое обращается к базе данных с данными для нескольких филиалов компании. В базе данных есть несколько таблиц поиска, к которым может получить доступ любой пользователь, и таблица для каждой ветви, доступ к которой имеют только авторизованные пользователи. Моя стратегия:
У меня возникли проблемы с тем, чтобы понять, как написать такую хранимую процедуру. SHOW GRANTS FOR CURRENT_USER
- очевидная возможность, но анализ чего-то вроде:
GRANT SELECT ON Company.BranchABC TO 'auser'@'%clientdomain.com'
в SQL, чтобы выяснить, что это за таблицы, кажется способом слишком беспорядочным. Выполнение SELECT
из реальных таблиц, содержащих разрешения, также кажется проблематичным, потому что мне пришлось бы дублировать MySQL » s логика для объединения разрешений из различных таблиц (пользователь, база данных, хост и т. д.)
Какие мудрые слова?