大家好,我不知道该怎么办了。我已将数据库远程导入服务器。
所以这是我的过程,我有一个定义器[email protected]:
DELIMITER //
CREATE DEFINER=`db_hrmis`@`127.0.0.1` PROCEDURE `proce_give_employee_leave_credits`()
BEGIN
UPDATE inf_employee_leaves lv SET lv.earnings = (lv.leaveMinutesPerMonth + lv.earnings), lv.allowedLeaveInMinutes = ((lv.noOfDays - (CONVERT((lv.earnings/480), DECIMAL(10,2)))) * 480), lv.noOfDays = CONVERT((lv.allowedLeaveInMinutes / 480), DECIMAL(10,2)) WHERE MONTH(lv.lastUpdated) <> MONTH(CURDATE());
END//
DELIMITER ;
自从我远程访问它以来,我还从服务器创建了一个数据库用户(例如db_hrmis @ myipaddress)。
问题是在导入程序后,定义程序已更改,我无法更改程序,当我尝试将其导出时,mysql dump仅显示如下
DELIMITER //
END//
DELIMITER ;
为空结构,我尝试授予权限(执行,创建例程,更改例程),但似乎无济于事。
这是其当前状态的屏幕截图。
如您所见,定义器未声明127.0.0.1,并且我遇到“您对该例程没有特权”问题,如果它是特权问题,则应授予用户什么特权?
十分感谢你的帮助。
最佳答案
可能是因为mysql用户对your_db.table上的特定sp没有执行特权。
能否请您发布# mysql> show grants for <your user>;
的输出
否则,您可以在为所有数据库上的特定用户授予完全特权之后,通过运行过程来确认这一点。
# mysql> grant all privileges on *.* to 'user'@'host';
# mysql> flush privileges;
关于mysql - MariaDB过程和函数特权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49854580/