【问题标题】:List of all table and column level privileges for a MySQL databaseMySQL 数据库的所有表和列级别权限的列表
【发布时间】:2019-01-13 19:56:26
【问题描述】:

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

【问题讨论】:

标签: mysql sql information-schema


【解决方案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';

【讨论】:

  • 谢谢,这太完美了!我添加了实际查询来查找特定数据库的所有表和列级权限。
  • 欢迎@LStarky!
【解决方案2】:

使用来自 percona 工具包的pt-show-grants

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2014-02-25
    • 2019-11-17
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多