关于schema权限的查看问题 - information_schema.schema_privileges 记录为空,无法正确校验用户对于schema的权限

背景:
新创建一个用户,授予指定schema的select 权限,但是基础试图information_schema.schema_privileges 没有相关数据,没有任何表有这个记录(mysql是存在上述的表中)

create user poc@’%’ identified by admin;
grant select on tested.* to poc ;

用这个账号登陆数据库后,默认可以访问的schema只有information_schema,testdb,由于没有权限查看mysql.user or mysql.db ,导致项目在做用户校验的时候无法获取正确权限(user_privileges 无法对应到schema,schema_privileges 里面的数据为空);虽然show grants 可以看到,但是返回给到前段可读性太差。
mysql 是记录在 informaition_schema.schema_privileges 中。

Information Schema | PingCAP Docs
可以看看官方文档关于information_schema的介绍,schema_privileges这张表在tidb中并未实现,所以查询是为空。

请问 show grants 的数据来自哪个底层表的查询

mysql Schema | PingCAP Docs
可以参考一下这个,有四张表。

因为权限最小化的问题,我们产品肯定不允许授予mysql 这个schema权限的:grinning:
是不是无解啦:flushed:

换个方式吧,在information_Schema里面创一个视图,数据从mysql.db里面来,慢慢想吧,办法总是人想出来的。