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