子分类
  • 无子分类
修改mysql user用户名后出现找不到用户的问题(mysql view用户名问题)
  • 2014-07-21发布
  • 2014-07-21修改

服务器配置说明:

数据库db:  

  duotun_com

表table:

  dt_product

  dt_user

  dt_company

数据库用户:

  grant all on *.* to 'public'@'%' identified by 'password'

  flush privileges;

操作:

  1.用public'@'%'连接后新建视图view_product

     CREATE VIEW view_product AS SELECT * FROM dt_product WHERE edit_time > 1;

  2.出于对安全性的考虑,删掉用户'public'@'%',新建'public'@'192.168.0.%'用户;

  3.退出Mysql后用mysql_dump -u public -h 192.168.0.2 -p duotun_com > duotun_com.sql;报找不到用户'public'@'%'。这里让我百思不得其解,我已经给新用户加了对duotun_com的所有权限,还报这样的错误?

  4.从控制台进入mysql后 show create view view_product:

    CREATE ALGORITHM=UNDEFINED DEFINER=`public`@`%` SQL SECURITY DEFINER VIEW `view_product` AS select ...

    发现DEFINER=`public`@`%`,用alter view 修改其值,alter ALGORITHM=UNDEFINED DEFINER=`public`@`192.168.0.%` SQL SECURITY DEFINER VIEW `view_product` AS select ...

  5.退出后用Mysql_dump能正常导出数据,搞定。

  6.如果不改 view的DEFINER值的话,也不能在没有原来的用户的情况下使用该视图,报ERROR 1449 (HY000): The user specified as a definer ('public'@'%') does not exist。