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

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

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

sql 复制代码
grant EXECUTE on DATA.* to 'platfrom'@'%';

还真麻烦!

sql 复制代码
show grants for 'platfrom'@'%';

先看下有啥权限?

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

sql 复制代码
grant EXECUTE on function data.RAND_STRING to 'platfrom'@'%';

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

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

sql 复制代码
CREATE DEFINER=`root`@`192.168.0.%` FUNCTION `rand_string`(len integer) RETURNS text CHARSET utf8mb4 COLLATE utf8mb4_general_ci
    NO SQL

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

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

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

sql 复制代码
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!

相关推荐
蓝鸟197411 分钟前
Oracle HIS业务视图优化实战|VI_BQ_YWTX11从高耗费到秒级响应
数据库·oracle·his数据库调优·复合索引踩坑·is null索引问题·ql视图优化
数智启示录29 分钟前
Apache Doris 4.0.8 混合检索实战(第 5 篇):三套系统只返回两条结果,一条 SQL 如何避开交集丢失
大数据·数据库·经验分享·sql·面试
今天AI了吗41 分钟前
大模型技术全景(一):AI、机器学习、深度学习,三者的关系到底是什么?一文搞懂
数据库·人工智能·python·sql·深度学习·机器学习·rust
这个DBA有点耶1 小时前
RANGE/LIST/HASH/二级分区怎么选?分区表适用边界与隐藏代价
数据库·mysql·dba
离陌在学C#1 小时前
C# 异步编程:从 async/await 到 Task 实战指南
开发语言·数据库·c#
还是大剑师兰特1 小时前
MySQL8.0 Windows完整安装教程
windows·mysql·大剑师
2601_962074682 小时前
Spring Boot的无缝衔接:深入解析与实践
数据库·spring boot·后端
武帝为此2 小时前
【InnoDB存储引擎介绍】
数据库·算法
csdn_aspnet2 小时前
mysql 触发器写法及示例
数据库·mysql·触发器·trigger
南城以南溫暖如初1472 小时前
社交裂变商城系统设计与实战开发指南
java·spring boot·mysql·vue·mybatis