aling
1
背景:
新创建一个用户,授予指定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 中。
CuteRay
(Cherry🍒)
2
Information Schema | PingCAP Docs
可以看看官方文档关于information_schema的介绍,schema_privileges
这张表在tidb中并未实现,所以查询是为空。
aling
3
请问 show grants 的数据来自哪个底层表的查询
CuteRay
(Cherry🍒)
4
aling
5
因为权限最小化的问题,我们产品肯定不允许授予mysql 这个schema权限的
是不是无解啦
CuteRay
(Cherry🍒)
6
换个方式吧,在information_Schema里面创一个视图,数据从mysql.db
里面来,慢慢想吧,办法总是人想出来的。