MySQL SHOW GRANTS

摘要:在本教程中,您将学习如何使用 MySQL SHOW GRANTS语句来显示分配给帐户用户的权限和角色。

MySQL SHOW GRANTS语句简介

MySQL SHOW GRANTS语句返回授予帐户用户或角色的所有权限和角色

以下是SHOW GRANTS语句的基本语法:

SHOW GRANTS
[FOR {user | role}
[USING role [, role] ...]]
Code language: SQL (Structured Query Language) (sql)

在这个语法中:

  • 首先,指定要在FOR关键字后显示先前授予该用户帐户或角色的权限的用户帐户或角色的名称。如果跳过FOR子句, SHOW GRANTS将返回当前用户的权限。
  • 其次,使用USING子句检查与用户角色关联的权限。您在USING子句中指定的角色必须事先授予用户。

要执行SHOW GRANTS语句,您需要具有mysql系统数据库的SELECT权限,但显示当前用户的权限和角色除外。

MySQL SHOW GRANTS语句示例

让我们举一些使用 MySQL SHOW GRANTS语句的示例。

A) 使用MySQL SHOW GRANTS显示授予当前用户的权限

以下语句使用SHOW GRANTS语句显示授予当前用户的权限:

SHOW GRANTS;
Code language: SQL (Structured Query Language) (sql)

它相当于下面的语句:

SHOW GRANTS FOR CURRENT_USER;
Code language: SQL (Structured Query Language) (sql)

SHOW GRANTS FOR CURRENT_USER();
Code language: SQL (Structured Query Language) (sql)

CURRENT_USERCURRENT_USER()都返回当前用户。

B) 使用 MySQL SHOW GRANTS显示授予用户的权限

首先,创建一个名为vehicles新数据库

CREATE DATABASE vehicles;
Code language: SQL (Structured Query Language) (sql)

二、选择数据库vehicles

USE vehicles;
Code language: SQL (Structured Query Language) (sql)

第三,在vehicles数据库中创建一个名为cars新表

CREATE TABLE cars (
    id INT AUTO_INCREMENT,
    make VARCHAR(100) NOT NULL,
    model VARCHAR(100) NOT NULL,
    PRIMARY KEY (id)
);
Code language: SQL (Structured Query Language) (sql)

第四,创建一个名为musk@localhost新用户

CREATE USER musk@localhost 
IDENTIFIED BY 'Super1Pass!';
Code language: SQL (Structured Query Language) (sql)

第五,显示授予用户musk@localhost的默认权限:

SHOW GRANTS 
FOR musk@localhost;
Code language: SQL (Structured Query Language) (sql)
显示补助金

GRANT USAGE是无特权的同义词。默认情况下,当新用户创建时,它没有任何权限。

第六,将vehicles数据库的所有权限授予用户musk@localhost

GRANT ALL 
ON vehicles.* 
TO musk@localhost;
Code language: SQL (Structured Query Language) (sql)

最后,显示授予用户musk@localhost的权限:

SHOW GRANTS 
FOR musk@localhost;
Code language: SQL (Structured Query Language) (sql)
显示用户示例的补助金

C) 使用 MySQL SHOW GRANTS显示授予角色的权限

首先,创建一个名为writer@localhost新角色

CREATE ROLE writer@localhost;
Code language: SQL (Structured Query Language) (sql)

其次,显示授予角色writer@localhost权限:

SHOW GRANTS 
FOR writer@localhost;
Code language: SQL (Structured Query Language) (sql)
显示角色的补助金

第三,将vehicles数据库的SELECTINSERTUPDATEDELETE权限授予writer@localhost

GRANT 
    SELECT, 
    INSERT, 
    UPDATE, 
    DELETE
ON vehicles.*
TO writer@localhost;
Code language: SQL (Structured Query Language) (sql)

第四,显示授予角色writer@localhost权限:

SHOW GRANTS 
FOR writer@localhost;
Code language: SQL (Structured Query Language) (sql)
显示角色示例的补助金

D) 使用 MySQL SHOW GRANTSUSING子句示例

首先,创建一个名为jame@localhost的新帐户用户:

CREATE USER jame@localhost
IDENTIFIED BY 'Secret@Pass1';
Code language: SQL (Structured Query Language) (sql)

其次,向用户jame@localhost授予EXECUTE权限:

GRANT EXECUTE 
ON vehicles.* 
TO jame@localhost;
Code language: SQL (Structured Query Language) (sql)

第三,将角色writer@localhost授予用户jame@localhost

GRANT writer@localhost
TO jame@localhost;
Code language: SQL (Structured Query Language) (sql)

第四,显示授予用户jame@localhost的权限:

SHOW GRANTS 
FOR jame@localhost;
Code language: SQL (Structured Query Language) (sql)

最后,在SHOW GRANTS语句中使用USING子句来显示与writer@localhost角色关联的权限:

SHOW GRANTS 
FOR jame@localhost 
USING writer@localhost;
Code language: SQL (Structured Query Language) (sql)
使用 using 子句显示用户的授权

在本教程中,您学习了如何使用 MySQL SHOW GRANTS语句来显示授予帐户用户或角色的权限。

本教程有帮助吗?