mysql 函数/存储过程的The user specified as a definer ('root'@'%') does not exist 解决方法
2018-03-15 18:00
931 查看
当使用的函数出现这种情况时,可以在数据库中找到这个函数,查看状态:
show FUNCTION status where name='xxxxxx';
查看definer 一栏,是否是 root@localhost ,若不是 则修改过来。
存储过程:
在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程;由公司写的一个c程序自动往该表写入数据,通过触发器转换成业务相关数据;同过root@localhost连接数据库,但提示192.168.2.%不存在
。
问题查找:
登录数据库,运行show procedure status\G 或者show procedure status 发现procedure的definer都是root@192.168.2.%
问题解决:
方法一:修改存储过程的definer
[sql] view
plain copy
update mysql.proc set definer='root@localhost' where db='db_name';
方法二:修改sql security
sql secuirty的值决定了调用存储过程的方式,取值 :definer或者invoker
definer:在执行存储过程前验证definer对应的用户如:root@192.168.2.%是否存在,以及是否具有执行存储过程的权限,若没有则报错
invoker:在执行存储过程时判断inovker即调用该存储过程的用户是否有相应权限,若没有则报错。
修改语法:
alter procedure pro_name sql security invoker;
ps: 在创建时指定sql security
create procedure pro_name(params....)
sql security definer|invoker
begin
.....
end;
[sql] view
plain copy
update mysql.proc set definer='root@localhost' where db='db_name';
show FUNCTION status where name='xxxxxx';
查看definer 一栏,是否是 root@localhost ,若不是 则修改过来。
存储过程:
在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程;由公司写的一个c程序自动往该表写入数据,通过触发器转换成业务相关数据;同过root@localhost连接数据库,但提示192.168.2.%不存在
。
问题查找:
登录数据库,运行show procedure status\G 或者show procedure status 发现procedure的definer都是root@192.168.2.%
问题解决:
方法一:修改存储过程的definer
[sql] view
plain copy
update mysql.proc set definer='root@localhost' where db='db_name';
方法二:修改sql security
sql secuirty的值决定了调用存储过程的方式,取值 :definer或者invoker
definer:在执行存储过程前验证definer对应的用户如:root@192.168.2.%是否存在,以及是否具有执行存储过程的权限,若没有则报错
invoker:在执行存储过程时判断inovker即调用该存储过程的用户是否有相应权限,若没有则报错。
修改语法:
alter procedure pro_name sql security invoker;
ps: 在创建时指定sql security
create procedure pro_name(params....)
sql security definer|invoker
begin
.....
end;
[sql] view
plain copy
update mysql.proc set definer='root@localhost' where db='db_name';
相关文章推荐
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- 心得体会 mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mySql问题:The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- MySQL之——mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法