技术开发 频道

深入学习MySQL授权表

  三、Tables_priv表与columns_priv表

  在上面介绍的五种授权表中,tables_priv和columns_priv是后来加入进来的,它们的主要目的是提供细粒度的用户控制。这两个表与授权表db非常类似,但是其控制的范围更加细致,即特定数据库中的特定的表。前面说过,超级用户可以通过授权表db来限制用户在一个数据库中的行为,有了这两个授权表,超级用户可以进一步控制用户针对每个表和每个字段的动作。所以,这给超级用户提供了更加灵活的控制选项。

  在深入学习对数据表的访问控制之前,首先让我们了解一下下列特性:

  • 通配符可以用于这两个表的host字段,但是不允许在Db、Table_name和Column_name字段使用通配符。
  • 权限字段被声明为SET字段。
  • tables_priv和columns_priv表只应当通过GRANT/REVOKE命令进行修改。通过INSERT命令向这两个表插入数据会导致服务器不稳定!
  • tables_priv表中的table_priv字段可以允许下列命令:Select、Insert、Update、Delete、Create、Drop、Grant、References、Index和Alter。
  • tables_priv表中的column_priv字段允许下列命令:Select、Insert、Update和References。
  • columns_priv表中的type字段允许下列命令:Select、Insert、Update和References。

  授权表tables_priv

  下列是一个tables_priv表的示意图:

  下面简要介绍各字段的含义:

  • Host——适用于那些主机?
  • Db——适用于从上面的主机所连接的哪些数据库?
  • User——适用于来自上述主机的哪些用户?
  • Table_name——适用于上述数据库中的哪些表?
  • Table_priv——为这个表赋予哪些权限?
  • Column_priv——为这个表中的个字段赋予哪些权限?
  • Timestamp——这个权限是何时赋予的?
  • Grantor——谁授与该用户的这个权限?
2
相关文章