Skip to content

MySQL 执行 SQL 时权限检查在哪个阶段?

学习MySQL执行SQL语句流程

在优化器之前和执行器中都会进行权限检查;

  • 在解析器解析完后优化器之前, 会调用 precheck 验证权限; 此时只是做简单的验证;
  • 在执行器中进行权限验证, 此时验证通过则说明用户有执行SQL语句的权限;

在上述两个阶段的权限检查中, 最主要的应该还是执行器中的权限验证; 因为在 SQL 语句的执行过程中, 可以会使用到触发器, 触发器需要在执行器阶段才能确定, 即优化器之前虽然验证权限通过, 但是在触发器执行的过程中可能会涉及到其他的表, 用户不一定有操作其他表的权限;

所以, 在执行器阶段进行权限检查通过才算是用户具有完全的权限;

参考文章