MySQL数据库的所有表和列级别特权的列表

时间:2019-01-13 19:56:27

标签: mysql

列出MySQL数据库的所有表级和列级特权的最简单方法是什么?我需要知道已为特定数据库授予了什么级别的自定义访问权限,以及哪些用户已对某些表和/或列进行了微调访问。

2 个答案:

答案 0 :(得分:1)

使用percona工具包中的pt-show-grants

答案 1 :(得分:1)

要列出表级特权,您可以查询the INFORMATION_SCHEMA.TABLE_PRIVILEGES table

  

TABLE_PRIVILEGES表包含以下列:

     
      
  • GRANTEE:授予特权的帐户的名称,格式为'user_name'@'host_name'

  •   
  • [...]

  •   
  • TABLE_NAME:表的名称。

  •   
  • PRIVILEGE_TYPE:授予的特权。该值可以是可以在表级别上授予的任何特权。 [...]。每行仅列出一个特权,因此,被授予者所拥有的每个表特权都有一行。

  •   

要列出列级特权,请查看the INFORMATION_SCHEMA.COLUMN_PRIVILEGES table

特定数据库的所有表/列级特权:

SELECT * FROM `INFORMATION_SCHEMA`.`TABLE_PRIVILEGES` WHERE TABLE_SCHEMA = 'my_database';
SELECT * FROM `INFORMATION_SCHEMA`.`COLUMN_PRIVILEGES` WHERE TABLE_SCHEMA = 'my_database';