今天碰到一个很邪门的问题,从公司之前一台机器上,通过mysqldump 每个表导出1w条记录,具体见(https://wenda.zuncuang.com/article/254)
导入到现在mysql上面的manage库(两边mysql版本还...
今天碰到一个很邪门的问题,从公司之前一台机器上,通过mysqldump 每个表导出1w条记录,具体见(https://wenda.zuncuang.com/article/254)
导入到现在mysql上面的manage库(两边mysql版本还一样),然后通过双击manage库,竟然提示select权限拒绝。如下图:

开始怀疑用户(shitian )权限不够,通过查询这个用户权限如下:

可以看到用户shitian 对整个myql实例拥有所有的权限,也就是说,shitian这个使用是个超级管理员。
竟然提示没有权限,百思不得其解,折腾了近一个多少时还是没有找到原因,后来搜索引擎上看到一篇文章,里面提到有可能是mysql的view 原系统定义的用户在现在系统上不存在导致的。

通过SHOW FULL TABLES IN manage WHERE TABLE_TYPE NOT LIKE '%table%';
还真发现里面有个“视图”,

这也说明一个问题,mysqldump默认情况是导出表数据的同时也会导出视图,
想进去看下这个视图,一直提示用户没有select 的权限,没有办法去到原来系统上查看了下,原来系统上面视图的DEFINER 为"tianyh"
单这个用户在现在的mysql上不存在,这就是导致视图这个视图拒绝访问,进而影响访问这个数据库,既然找到了原因,解决起来也就很方面了
1,删除这个视图 drop view trade_total 2,在系统上面创建一个同名的用户,给定相应的权限,
我是直接删除了这个视图,然后再双击打开manage数据库,可以正常访问,报错解决了。
PS,在navicat等图形界面上,双击打开manage库,是报错的,但命令符下,能正常浏览manage库中的表,只是不能浏览这个视图而已。