1

假设我们有 2 个用户,一个 mysql DB 客户的 A 和 B。

用户 A 拥有特定数据库的所有权限,而用户 B 拥有一些复杂的特定权限,例如

GRANT SELECT,INSERT
    ->     ON customer.Table1
    ->     TO 'user B'@'server.domain'
    ->     IDENTIFIED BY 'pwrd'; 

现在,如果我在 Table1 表上的客户数据库上运行查询,那么当分别通过 User A 和 User B 运行时,查询的执行时间会有什么不同吗?

以及如何在查询执行时实际检查权限,或者在建立连接时检查权限并将其存储在其他地方?

我所知道的是权限存储在名为'user (Host,User,Password)' 的表中。

4

1 回答 1

3

在执行 sql 语句之前,在 sql 语句的编译时检查登录用户的权限。

仅检查该特定 sql 语句中使用的资源(例如表、视图、存储过程、函数)的权限。

用户的权限或用户级别不影响执行时间。

当用户尝试连接到数据库时,MySQL 会检查该特定用户名/主机/密码组合是否具有连接权限。一旦建立连接,在执行任何操作之前,MySQL 会再次检查用户/主机组合是否具有执行该操作的正确访问级别。用户表是 MySQL 检查的第一个表。在授予任何访问权限之前,必须在此表中列出所有用户/主机/密码组合。

于 2012-06-07T10:04:57.270 回答