mysql 视图DEFINER 在目标系统不存在导致数据库在navicat上没有权限访问

今天碰到一个很邪门的问题,从公司之前一台机器上,通过mysqldump 每个表导出1w条记录,具体见(https://wenda.zuncuang.com/article/254) 导入到现在mysql上面的manage库(两边mysql版本还...

今天碰到一个很邪门的问题,从公司之前一台机器上,通过mysqldump 每个表导出1w条记录,具体见(https://wenda.zuncuang.com/article/254)

导入到现在mysql上面的manage库(两边mysql版本还一样),然后通过双击manage库,竟然提示select权限拒绝。如下图:

attachments-2019-01-Zlxe46aA5c49b8d8b2ecd.png

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

attachments-2019-01-SSG8Py2M5c49b9137b5db.png

可以看到用户shitian 对整个myql实例拥有所有的权限,也就是说,shitian这个使用是个超级管理员。

竟然提示没有权限,百思不得其解,折腾了近一个多少时还是没有找到原因,后来搜索引擎上看到一篇文章,里面提到有可能是mysql的view 原系统定义的用户在现在系统上不存在导致的。

attachments-2019-01-ANTtasvs5c49ba4da03ac.png


通过SHOW FULL TABLES IN manage WHERE TABLE_TYPE NOT LIKE '%table%';

还真发现里面有个“视图”,attachments-2019-01-KuFzOvrG5c49bb7925339.png
这也说明一个问题,mysqldump默认情况是导出表数据的同时也会导出视图,
想进去看下这个视图,一直提示用户没有select 的权限,没有办法去到原来系统上查看了下,原来系统上面视图的DEFINER 为"tianyh"
单这个用户在现在的mysql上不存在,这就是导致视图这个视图拒绝访问,进而影响访问这个数据库,既然找到了原因,解决起来也就很方面了
1,删除这个视图 drop view trade_total            2,在系统上面创建一个同名的用户,给定相应的权限,

我是直接删除了这个视图,然后再双击打开manage数据库,可以正常访问,报错解决了。

PS,在navicat等图形界面上,双击打开manage库,是报错的,但命令符下,能正常浏览manage库中的表,只是不能浏览这个视图而已。


  • 发表于 2019-01-24 21:25
  • 阅读 ( 50 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
石天
石天

437 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章