我怎样才能在MySQL中显示用户的权限?

我知道我可以通过以下简单的方法设置用户权限

grant all on [database name].[table name] to [user name]@[host name]; 

但是我怎么能看到现有的特权呢?

我需要看到类似于授予使用的数据。 换句话说,我想知道给定的用户对给定主机的给定数据库的给定表有特定的访问权限。

我怎样才能得到它?

命令SHOW GRANTS [FOR user]是你正在寻找的。 在这里看到更多的细节。

以下是SHOW GRANTS的MySQL文档 :

 SHOW GRANTS [FOR user] 

此语句列出了必须发布的GRANT语句或语句以复制授予MySQL用户帐户的权限。 该帐户使用与GRANT语句相同的格式进行命名; 例如,'jeffrey'@'localhost'。 如果仅指定帐户名称的用户名部分,则使用“%”的主机名部分。 有关指定帐户名称的更多信息,请参见第12.5.1.3节“GRANT语法”。

 mysql> SHOW GRANTS FOR 'root'@'localhost'; +---------------------------------------------------------------------+ | Grants for root@localhost | +---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | +---------------------------------------------------------------------+ 

要列出授予您用于连接到服务器的帐户的权限,可以使用以下任一语句:

 SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER(); 

从MySQL 5.0.24开始,如果在DEFINER上下文中使用SHOW GRANTS FOR CURRENT_USER(或任何等效语法),例如在使用SQL SECURITY DEFINER定义的存储过程中),那么所显示的授予是定义者不是调用者。

SHOW GRANTS只显示明确授予指定帐户的权限。 其他权限可能对帐户可用,但不显示。 例如,如果存在匿名帐户,则指定的帐户可能可以使用其权限,但是SHOW GRANTS不会显示它们。

SHOW GRANTS需要mysql数据库的SELECT权限。