【问题标题】:How can I view all those users and their "Grants" for an entire table?如何查看整个表的所有这些用户及其“授权”?
【发布时间】:2014-04-11 17:40:58
【问题描述】:

如果我有一个名为 example 的表。我将诸如 SELECT、INSERT 等权限授予 subject1、subject2、subject3。那么,作为表的所有者,我如何查看我给示例的每个人和他们的权限呢?

【问题讨论】:

    标签: mysql sql privileges sql-grant


    【解决方案1】:

    您可以对mysql 数据库中的tables_priv 表运行查询:

    SELECT p.User
         , p.Host
         , p.Table_priv
         , p.Grantor
      FROM mysql.tables_priv p
     WHERE p.Db         = 'mydatabase'
       AND p.Table_name = 'example'
     ORDER by 1,2,3
    

    如果在整个数据库上授予权限,则不是每个人都对表具有权限,例如

    GRANT SELECT ON mydatabase.* TO subject1@'%'  
    

    这些权限将位于mysql 数据库的db 表中。授予用户在所有数据库上的全局权限将位于 user 表中。

    【讨论】:

      【解决方案2】:

      用户和权限的 MySql 架构非常复杂,具体取决于您希望获得的深度。

      您可以从users 表中找到所有用户(授予您权限)。您可能会从这两列中找到表/列权限:tables_priv and columns_priv

      所以你会想要这样的东西:

      select * from users
      join tables_priv on users.user = tables_priv.user
      

      请注意,您想要的信息越多,扩展此查询所需的信息就越多。

      【讨论】:

      • 我建议您通读 mysql 文档。这很冗长。
      猜你喜欢
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2020-10-09
      • 2013-11-19
      • 2019-05-02
      相关资源
      最近更新 更多