关于mysql存储过程的definer的问题
2014-10-05 16:13
393 查看
由于对mysql了解不够透彻,导致对definer问题查了好久才解决问题
记录自己的一些理解!
问题描述:
在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程;由公司写的一个c程序自动往该表写入数据,通过触发器转换成业务相关数据;同过root@localhost连接数据库,但提示192.168.2.%不存在
问题查找:
登录数据库,show procedure status\G 发现procedure的definer都是root@192.168.2.%
问题解决:
方法一:修改存储过程的definer
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;
更多文章请关注公众号archleaner 或 扫码:
记录自己的一些理解!
问题描述:
在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程;由公司写的一个c程序自动往该表写入数据,通过触发器转换成业务相关数据;同过root@localhost连接数据库,但提示192.168.2.%不存在
问题查找:
登录数据库,show procedure status\G 发现procedure的definer都是root@192.168.2.%
问题解决:
方法一:修改存储过程的definer
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;
更多文章请关注公众号archleaner 或 扫码:
相关文章推荐
- 关于mysql存储过程的definer的问题
- 关于mysql存储过程的definer的问题
- 关于mysql存储过程的definer的问题
- 关于mysql存储过程的definer的问题
- 关于mysql存储过程的definer的问题
- 关于mysql存储过程的definer的问题1
- mysql 存储过程的权限问题 java.sql.SQLException: The user specified as a definer ('xxxx'@'%') does not exist
- 关于mysql下的存储过程的问题
- 关于修改mysql账号信息导致存储过程无法访问的问题
- 关于mysql存储过程,返回多个表数据的接收问题。
- 关于MySQL存储过程中中文乱码的问题
- 关于MYSQL替换和存储过程的问题、
- 关于shell调用MySQL存储过程的问题
- 第一次写MySQL存储过程遇到的关于DELIMITER的问题
- 关于SQL的存储过程一个悬而未决的老问题
- 投票系统的Mysql存储过程遇到的一些问题.
- 关于存储过程的参数问题
- 关于存储过程中有写字段报列名无效的问题!
- 利用反射传输存储过程参数,在mssql和mysql两种数据库中存在的问题
- mysql 存储过程的问题