短版:如何编写SQL过程以列出特定用户可访问的MySQL数据库中的几个表中的哪一个?
更长的版本:
我正在编写一个多用户应用程序,该应用程序使用公司的多个分支机构的数据访问数据库。数据库具有许多任何用户都可以访问的查找表,以及只有授权用户才能访问的每个分支的表。我的策略是:
我无法弄清楚如何编写这样的存储过程。 SHOW GRANTS FOR CURRENT_USER
显然是可能的,但解析如下:
GRANT SELECT ON Company.BranchABC TO 'auser'@'%clientdomain.com'
在SQL中找出表格似乎方式太乱了。从拥有权限的实际表中执行SELECT
似乎也有问题,因为我必须复制MySQL的逻辑来组合各种表(用户,数据库,主机等)的权限。
任何智慧的话语?
答案 0 :(得分:3)
我之前从未向MySQL用户授予每个表权限,但要执行此操作,您将检查TABLE_PRIVILEGES
数据库中的information_schema
表。
这应该指向正确的方向。
答案 1 :(得分:1)
可以使用查询来检查MySQL用户列表及其权限。
select * from mysql.user\G;
http://www.thedevheaven.com/2012/04/retrieve-mysql-users-list-and-its.html
答案 2 :(得分:1)
您可以查看用户拥有哪些表的权限:
show grants for 'user'@'host';
例如,要查看user1(网络10.25中的所有计算机)的权限,请运行:
show grants for 'user'@'10.25.%.%';