当前位置: 首页 > news >正文

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!

相关文章:

  • 腾讯《地下城与勇士:起源》手游在部分安卓平台停止更新
  • 微信小程序-上拉加载和下拉刷新
  • C类IP介绍
  • 【Java数据结构】优先级队列详解(二)
  • centos环境上:k8s 简单安装教程
  • 《算法设计与分析》第五六章:回溯法与分支限界法
  • FreeRTOS学习笔记-基于stm32(11)任务通知及相关API函数简介
  • 12306 火车票价格解析 (PHP 解析)
  • 洛谷 P1008 [NOIP1998 普及组] 三连击
  • 被拷打已老实!面试官问我 #{} 和 ${} 的区别是什么?
  • 算法金 | 再见!!!梯度下降(多图)
  • 力扣469A
  • C++ 50 之 继承中的对象模型
  • 就因为没在大屏项目加全屏按钮,早上在地铁挨了领导一顿骂
  • javaweb 期末复习
  • 0基础学习移动端适配
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript创建对象的四种方式
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • mysql外键的使用
  • npx命令介绍
  • Octave 入门
  • React的组件模式
  • spark本地环境的搭建到运行第一个spark程序
  • Webpack 4x 之路 ( 四 )
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 前端攻城师
  • 提醒我喝水chrome插件开发指南
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • (145)光线追踪距离场柔和阴影
  • (2015)JS ES6 必知的十个 特性
  • (55)MOS管专题--->(10)MOS管的封装
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (备份) esp32 GPIO
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转) Face-Resources
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Mysql的优化设置
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)OpenStack Hacker养成指南
  • .jks文件(JAVA KeyStore)
  • .NET CLR基本术语
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net MVC + EF搭建学生管理系统
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 读取 JSON格式的数据
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET框架