简短版:如何编写 SQL 过程来列出特定用户可以访问的 MySQL 数据库中的几个表中的哪一个?
更长的版本:
我正在编写一个多用户应用程序,它可以访问包含公司多个分支机构数据的数据库。该数据库有许多任何用户都可以访问的查找表,以及只有授权用户才能访问的每个分支的表。我的策略是:
- 编写一个存储过程,返回用户具有 SELECT 权限的相关表的列表。
- 从应用程序中调用该过程。如果只返回一个表,请使用它,否则让用户选择他们想要访问的分支(例如,对于经理)。
我无法弄清楚如何编写这样的存储过程。SHOW GRANTS FOR CURRENT_USER
是一种明显的可能性,但解析如下:
GRANT SELECT ON Company.BranchABC TO 'auser'@'%clientdomain.com'
在 SQL 中找出表是什么似乎太混乱了。从持有权限的实际表中做一个SELECT
似乎也有问题,因为我必须复制 MySQL 的逻辑来组合来自各种表(用户、数据库、主机等)的权限
有什么智慧之言吗?