MySQL中的定义者(definer)的作用
现象:在数据库迁移之后,调用函数报错,提示definer不存在。
查了一下,发现函数和存储过程之类的,本身调用是不存在权限这个概念的。
definer这个值并不会限制函数和存储过程被调用的权限,但会限制函数和存储过程访问数据库的权限。
函数和存储过程在访问数据库时,会获取definer用户对应的数据库访问权限。
因为在迁库后,definer值没有修改,原数据库的用户在新库中不存在,所以报错,修改一下definer值就可以了
现象:在数据库迁移之后,调用函数报错,提示definer不存在。
查了一下,发现函数和存储过程之类的,本身调用是不存在权限这个概念的。
definer这个值并不会限制函数和存储过程被调用的权限,但会限制函数和存储过程访问数据库的权限。
函数和存储过程在访问数据库时,会获取definer用户对应的数据库访问权限。
因为在迁库后,definer值没有修改,原数据库的用户在新库中不存在,所以报错,修改一下definer值就可以了