我在mariaDB数据库中创建了一个存储过程。定义者是受限制的用户,没有EXECUTE特权(在db,table和procedure级别)。
但我可以通过此帐户成功执行此程序。
这是一种正常的行为,即使它没有EXECUTE特权,定义者也可以执行该过程吗?
答案 0 :(得分:2)
这是正常行为。来自manual:
执行存储例程需要EXECUTE特权。但是,如果需要,该特权将自动授予例程的创建者(并在例程被删除时从创建者中删除)。此外,例程的默认SQL SECURITY特性是DEFINER,它允许有权访问与例程关联的数据库的用户执行例程。