欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > MYSQL execute command denied to user ‘‘@‘%‘ for routine

MYSQL execute command denied to user ‘‘@‘%‘ for routine

2025/2/25 16:30:07 来源:https://blog.csdn.net/ZengMuAnSha/article/details/139594590  浏览:    关键词:MYSQL execute command denied to user ‘‘@‘%‘ for routine

有时候 某个MYSQL用户无法执行某个函数.

有时候你赋了EXECUTE *.* 权限也不行

grant EXECUTE on DATA.* to 'platfrom'@'%';

还真麻烦!

show grants for 'platfrom'@'%';

先看下有啥权限?

查找一翻 正确赋函数执行权限是这样的
 

grant EXECUTE on function data.RAND_STRING to 'platfrom'@'%';

OK 是OK 可应用用户执行还是报错,不过这次报的是root@%用户不存在

经过检查MYSQL.USER下确实没有这个用户,只有ROOT@192.168.0.%的. 把下面的函数用户给改一下

CREATE DEFINER=`root`@`192.168.0.%` FUNCTION `rand_string`(len integer) RETURNS text CHARSET utf8mb4 COLLATE utf8mb4_general_ciNO SQL

改完以后还要重新赋下权限 ALL权限给 ROOT

 grant all privileges on *.* to 'root'@"192.168.0.%" ;
grant EXECUTE on function data.rand_string to 'platfrom'@'%';
FLUSH PRIVILEGES;

话说来我们的ROOT并不是拥有所有的权限, 尤其涉及到登陆IP的时候
 

mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'platfrom'@'%';
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation
mysql> SELECT HOST,USER FROM MYSQL.USER;
+-----------+-----------------------+
| HOST      | USER                  |
+-----------+-----------------------+
| %         | root                  |
| localhost | mysql.infoschema      |
| localhost | mysql.session         |
| localhost | mysql.sys             |
+-----------+-----------------------+
19 rows in set (0.00 sec)mysql> grant all privileges on *.* to 'root'@"%";
Query OK, 0 rows affected (0.03 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'platfrom'@'%';
Query OK, 0 rows affected (0.09 sec)

因为查了CSDN一遍,基本上讲都是要给某个应用赋所有权限,就是为了能执行函数. 显然这权限太大了,为此赋多了,要回收! 结果ROOT没有权限回收,丢!  然后ROOT给ROOT 赋所有权限.才可以回收应用账号的权限! 

MYSQL ROOT 权限默认不能拥有全部权限, 函数定义最好是应用账号,使用ROOT,还要额外赋执行权限. 这个执行不是EXECUTE!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词