mysql用户报错Access denied; you need (at least one of) the SUPER privilege(s) for this operation


同事说数据库账号没有授权,要求给某个数据库用户授予super权限。

纳闷呢,为啥需要super权限啊!

原来他在创建函数的时候报错:

> 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation

让他把创建脚本发来一看,果然有问题:

CREATE DEFINER=`test`@`%` FUNCTION `gn`(`ist` varchar(30)) RETURNS varchar(10)
BEGIN
  DECLARE v_inv NUMERIC(20,0);
  DECLARE v_strSn VARCHAR(30);
  DECLARE v_t VARCHAR(10);
  SET v_inv = getSeqNextValue(ist);
  select LPAD(v_inv,10,"0") into v_t from dual;
  RETURN v_t;
END

这里是从测试环境拷贝过来的,顺带了

DEFINER=`test`@`%`

而这个环境真正的账户是

DEFINER=`test`@`192.168.%`

把这个部分去掉即可。