MySQL显示授权

时间:2019-11-20 08:52:34  来源:igfitidea点击:

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

MySQL SHOW GRANTS语句简介

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

这是SHOW GRANTS语句的基本语法:

SHOW GRANTS
[FOR {user | role}
[USING role [, role] ...]]

使用以下语法:

  • 首先,在FOR关键字之后指定要显示先前授予该用户帐户或角色的特权的用户帐户或角色的名称。
    如果跳过FOR子句,则SHOW GRANTS将返回当前用户的特权。

  • 其次,使用USING子句检查与用户角色相关联的特权。
    您必须在USING子句中指定的角色先前已授予用户。

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

MySQL SHOW GRANTS语句示例

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

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

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

SHOW GRANTS;

它等效于以下语句:

SHOW GRANTS FOR CURRENT_USER;

SHOW GRANTS FOR CURRENT_USER();

CURRENT_USER和CURRENT_USER()都返回当前用户。

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

首先,创建一个名为Vehicles的新数据库:

CREATE DATABASE vehicles;

其次,选择数据库车辆:

USE vehicles;

第三,在车辆数据库中创建一个称为汽车的新表:

CREATE TABLE cars (
    id INT AUTO_INCREMENT,
    make VARCHAR(100) NOT NULL,
    model VARCHAR(100) NOT NULL,
    PRIMARY KEY (id)
);

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

CREATE USER musk@localhost 
IDENTIFIED BY 'Super1Pass!';

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

SHOW GRANTS 
FOR musk@localhost;

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

第六,将车辆数据库上的所有特权授予用户musk @ localhost:

GRANT ALL 
ON vehicles.* 
TO musk@localhost;

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

SHOW GRANTS 
FOR musk@localhost;

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

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

CREATE ROLE writer@localhost;

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

SHOW GRANTS 
FOR writer@localhost;

第三,将车辆数据库上的SELECT,INSERT,UPDATE和DELETE特权授予writer @ localhost:

GRANT 
    SELECT, 
    INSERT, 
    UPDATE, 
    DELETE
ON vehicles.*
TO writer@localhost;

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

SHOW GRANTS 
FOR writer@localhost;

D)使用带有USING子句示例的MySQL SHOW GRANTS

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

CREATE USER jame@localhost
IDENTIFIED BY 'Secret@Pass1';

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

GRANT EXECUTE 
ON vehicles.* 
TO jame@localhost;

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

GRANT writer@localhost
TO jame@localhost;

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

SHOW GRANTS 
FOR jame@localhost;

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

SHOW GRANTS 
FOR jame@localhost 
USING writer@localhost;

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