代码改变世界

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

2022-05-11 19:15  abce  阅读(9047)  评论(0编辑  收藏  举报

同事说数据库账号没有授权,要求给某个数据库用户授予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.%`

  

把这个部分去掉即可。