【发布时间】:2014-04-11 17:40:58
【问题描述】:
如果我有一个名为 example 的表。我将诸如 SELECT、INSERT 等权限授予 subject1、subject2、subject3。那么,作为表的所有者,我如何查看我给示例的每个人和他们的权限呢?
【问题讨论】:
标签: mysql sql privileges sql-grant
如果我有一个名为 example 的表。我将诸如 SELECT、INSERT 等权限授予 subject1、subject2、subject3。那么,作为表的所有者,我如何查看我给示例的每个人和他们的权限呢?
【问题讨论】:
标签: mysql sql privileges sql-grant
您可以对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 表中。
【讨论】:
用户和权限的 MySql 架构非常复杂,具体取决于您希望获得的深度。
您可以从users 表中找到所有用户(授予您权限)。您可能会从这两列中找到表/列权限:tables_priv and columns_priv
所以你会想要这样的东西:
select * from users
join tables_priv on users.user = tables_priv.user
请注意,您想要的信息越多,扩展此查询所需的信息就越多。
【讨论】: