Azure Database for MySQL弹性服务器存储过程执行权限问题求助
解决Azure Database for MySQL弹性服务器存储过程调用1227权限错误
问题根源
你的存储过程中包含修改全局系统变量的语句:
SET GLOBAL local_infile = 'ON';
Azure MySQL弹性服务器限制了普通用户(甚至服务器管理员)的SUPER或SYSTEM_VARIABLES_ADMIN权限,无法通过存储过程直接修改全局变量,这是触发1227错误的核心原因。
解决方案
方案1:改用会话级变量修改
将全局变量修改改为会话级,仅对当前存储过程的执行会话生效,无需特殊权限:
CREATE PROCEDURE `<procedurename>`() BEGIN -- 改用SESSION级变量,无需特殊权限 SET SESSION local_infile = 'ON'; SET SESSION sql_mode = ""; SET @datum= CONCAT(year(now()),'-', LPAD(month(now()),2,'0'),'-','01'); SET @instantie='I000'; -- 剩余存储过程逻辑... END
方案2:通过Azure门户配置全局变量(如需持久生效)
如果需要全局开启local_infile,不要在存储过程中修改,直接在Azure操作:
- 登录Azure门户,进入你的MySQL弹性服务器
- 找到服务器参数选项,搜索
local_infile - 将参数值设置为
ON,保存后重启服务器生效
权限说明
你之前授予的CREATE ROUTINE和EXECUTE权限是存储过程创建与执行的必要权限,但这些权限不涉及系统变量修改,因此无法解决当前错误。
内容的提问来源于stack exchange,提问作者Joren
相关产品推荐
相关产品推荐

