MySQL - DROP ROLE 语句



MySQL DROP ROLE 语句

您可以使用 DROP ROLE 语句删除一个或多个现有的角色。要执行此语句,您需要拥有 CREATE USER 或 DROP ROLE 权限。

语法

以下是 DROP USER 语句的语法:

DROP ROLE [IF EXISTS] role_name ...

其中,role_name 是您需要删除的 MySQL 用户的名称。

示例

假设我们使用 CREATE ROLE 语句创建了一个名为 TestRole_ReadOnly 的角色,如下所示:

CREATE ROLE 'TestRole_ReadOnly';

现在,让我们使用 GRANT 语句向创建的角色授予只读权限,如下所示:

GRANT SELECT ON * . * TO 'TestRole_ReadOnly';

然后,您可以按如下方式将创建的角色授予用户:

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'

如果您与 DROP ROLE 语句一起使用 IF EXISTS 子句,如下所示,则将删除指定的角色,如果不存在具有给定名称的角色,则将忽略该查询。

DROP ROLE IF EXISTS demo;
广告

© . All rights reserved.