zoukankan      html  css  js  c++  java
  • The user specified as a definer (”@sa’%') does not exist 解决方法

    mysql数据库报错The user specified as a definer (”@sa’%') does not exist。尝试过两种方式,第一种重启之后好用,但是一会就又不好用了。第二种算是一种完美的解决方法。此种报错主要是针对访问视图文件引起的。

    第一种:

    给root赋值所有权限:注意在命令符下面操作。

    grant all privileges on *.* to root@”%” identified by “.”;
     
    flush privileges;
     
    但是这种重启之后一会就又不行了。
     
     
    第二种:
     
    复制视图创建语句,直接将create改成alter,definer改成相关的,比如root@localhost  例如:
     
    用alter view 修改definer的值,alter ALGORITHM=UNDEFINED DEFINER=`public`@`192.168.0.%` SQL SECURITY DEFINER VIEW `view_product` AS 视图选择语句。

    通过执行use information_schema;和 select TABLE_SCHEMA,TABLE_NAME,DEFINER from views; 两条语句,可以查询到definer是否更改成功了。

    第三种:

    修改创建视图 过程的创建人, 比如将上面sa用户 改成在 mysql.user表中存在的用户即可 

    原因分析
    因为创建视图使用的是xff@%用户(目前已经不存在),然后登录用户使用的是xff@localhost用户,导致mysql认为现在的用户无权限访问该视图,解决方法就是在当前用户下重建该视图。

    题外话:还有一种方法是如果你是运维人员,此问题直接交由程序去处理,让其检查创建触发器、视图、存储过程等sql。如果包含root@%,替换之。重新创建。没有尝试过,后面可以试试。

    转发地址:http://blog.handone.com/index.php/archives/137

  • 相关阅读:
    ie兼容,手机端兼容问题
    JS-cookie和正则表达式
    第六节蓝桥杯 方格填数
    最长公共子串长度
    上台阶问题
    各种好东西
    Painting the balls (dp优化)
    Nobita's New Filesystem (bitset)
    恐狼后卫 (区间dp)
    CF701F String set queries (分块思想+暴力)
  • 原文地址:https://www.cnblogs.com/justphp/p/5612030.html
Copyright © 2011-2022 走看看