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

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


但是如何查看现有权限?

我需要查看与赠款中使用的数据相似的数据。换句话说,我想知道给定的用户可以从给定的主机对给定的数据库的给定表进行访问。

如何获取它?

#1 楼

您正在寻找的命令SHOW GRANTS [FOR user]。有关更多详细信息,请参见此处。

#2 楼

这是SHOW GRANTS的MySQL文档: MySQL用户帐户。该帐户使用与GRANT语句相同的格式命名。例如'jeffrey'@'localhost'。如果仅指定帐户名的用户名部分,则使用主机名部分“%”。有关指定帐户名称的更多信息,请参见第12.5.1.3节“ GRANT语法”。


SHOW GRANTS [FOR user]



列出授予的特权用于连接服务器的帐户,可以使用以下任何语句:


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



从MySQL 5.0开始.24,如果在DEFINER上下文中(例如,在用SQL SECURITY DEFINER定义的存储过程中)使用了CURRENT_USER的SHOW GRANTS FOR CURRENT_USER(或任何等效语法),则显示的授权是定义者的,而不是调用者的。

SHOW GRANTS仅显示显式授予命名帐户的特权。该帐户可能还可以使用其他特权,但是不会显示。例如,如果存在一个匿名帐户,则该命名帐户可能能够使用其特权,但SHOW GRANTS将不会显示它们。

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

评论


SHOW GRANTS需要mysql系统数据库的SELECT特权,但要显示当前用户的特权和角色除外。

– Sandip Bhattacharya
19年2月12日在22:16