MySQL 的访问控制大体可以理解为两个阶段:先判断“能不能连进来”,再判断“连进来后能做什么”。
连接核实阶段主要解决的是:
- 当前用户是否存在
- 是否允许从当前主机连接
- 密码是否正确
也就是说,数据库会先根据用户名、主机和认证信息确认这个连接请求是否合法。
如果这个阶段失败,用户甚至无法建立连接。
连接成功之后,MySQL 还会继续判断用户是否有权限执行当前请求。
例如:
- 是否有权访问某个数据库
- 是否可以查询某张表
- 是否可以执行
INSERT、UPDATE、DELETE - 是否可以执行存储过程、查看视图等
如果没有权限,请求会被拒绝,即使用户已经成功登录。
访问控制的核心逻辑是“两步走”:先验证连接身份,再验证操作权限。理解这个过程后,很多“为什么能登录但不能执行 SQL”或者“为什么根本连不上”的问题就更容易分析。