MySQL - DROP ROLE 语句
MySQL DROP ROLE 语句
您可以使用 DROP ROLE 语句删除一个或多个现有角色。要执行此语句,您需要拥有 CREATE USER 或 DROP ROLE 权限。
语法
以下是 DROP USER 语句的语法 -
DROP ROLE [如果存在] role_name ...
其中,role_name 是您需要删除的 MySQL 用户的名称。
示例
假设我们已经使用 CREATE ROLE 语句 创建了一个名为 TestRole_ReadOnly 的角色,如下所示 -
CREATE ROLE 'TestRole_ReadOnly';
现在,让我们使用 GRANT 语句向创建的角色授予只读权限,如下所示:-
GRANT SELECT ON * . * TO 'TestRole_ReadOnly';
然后,您可以按如下方式将创建的角色 GRANT 给用户:-
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT 'TestRole_ReadOnly' TO 'newuser'@'localhost';
您可以使用以下查询检索授予所有用户的角色列表:-
SELECT * FROM mysql.role_edges;
输出
以下是上述查询的输出 -
FROM_HOST | FROM_USER | TO_HOST | TO_USER | WITH_ADMIN_OPTION |
---|---|---|---|---|
% | TestRole_ReadOnly | localhost | newuser | N |
以下查询将删除上面创建的角色 -
DROP ROLE 'TestRole_ReadOnly';
由于我们已经删除了创建的角色,如果您再次验证角色列表,您将得到一个空集,如下所示 -
SELECT * FROM mysql.role_edges; Empty set (0.00 sec)
删除多个角色
您也可以使用 DROP ROLE 语句一次删除多个角色。假设我们创建了两个角色 -
CREATE ROLE 'MyAdmin', 'MyDeveloper';
以下查询将立即删除上面创建的角色 -
DROP ROLE 'MyAdmin', 'MyDeveloper';
IF EXISTS 子句
如果您尝试删除不存在的 MySQL 角色,将生成如下所示的错误 -
DROP ROLE demo@localhost; ERROR 1396 (HY000): Operation DROP ROLE failed for 'demo'@'localhost'
如果将 IF EXISTS 子句与 DROP ROLE 语句一起使用(如下所示),则指定的角色将被删除,并且如果具有给定名称的角色不存在,则查询将被忽略。
DROP ROLE IF EXISTS demo;