错误:访问被拒绝;您需要超级权限才能执行此操作
尝试将 SQL 函数导入 phpMyAdmin 时,您可能会遇到错误消息:“#1227 - 访问被拒绝;您需要超级权限才能执行此操作。”这个错误可能会令人沮丧,但解决方案相对简单。
了解 SUPER 权限
在 MySQL 中,SUPER 权限是一种特殊的权限级别,它授予用户执行高级操作的能力,包括创建和修改存储例程。默认情况下,标准用户不具备 SUPER 权限。
删除 DEFINER 语句
在您的情况下,问题是由于在SQL 查询。 DEFINER 语句指定将拥有所创建函数的用户。如果指定的用户没有 SUPER 权限,查询将失败。
要解决此问题,请在将 SQL 查询导入 phpMyAdmin 之前从 SQL 查询中删除 DEFINER 语句。这将允许在不需要 SUPER 权限的情况下创建函数。
设置分隔符
此外,必须在 SQL 文本下设置分隔符字段phpMyAdmin 中的框。该字段指定用于分隔 SQL 语句的字符。默认情况下,分号 (;) 用作分隔符,但如果您的查询在函数定义中包含分号,则需要选择不同的分隔符。
不带 DEFINER 语句的示例查询
以下是不带 DEFINER 语句的 SQL 查询示例:
/*!50003 DROP FUNCTION IF EXISTS `f_calc_gst` */;; /*!50003 SET SESSION SQL_MODE=""*/;; /*!50003 CREATE*/ /*!50003 FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8 begin declare res varchar(255); declare v_gst decimal(15,3); declare v_gst_formula varchar(255); select GST, GST_formula into v_gst, v_gst_formula from taxes_periods where NOW() between dt_debut and dt_fin and id_province = p_province; set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht); set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst); set res = concat('select round(', v_gst_formula, ',2) "gst"'); return res; end */;;
删除 DEFINER 语句并设置正确的分隔符后,您应该能够导入 SQL 查询成功进入 phpMyAdmin,没有遇到拒绝访问错误。
以上是为什么在将 SQL 函数导入 phpMyAdmin 时出现'访问被拒绝;此操作需要 SUPER 权限”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!