摘要:在本教程中,您将学习如何使用 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_USER
和CURRENT_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
数据库的SELECT
、 INSERT
、 UPDATE
和DELETE
权限授予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 GRANTS
和USING
子句示例
首先,创建一个名为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)
在本教程中,您学习了如何使用 MySQL SHOW GRANTS
语句来显示授予帐户用户或角色的权限。