SQL 中的角色2025年2月3日 | 阅读 5 分钟 在本篇文章中,我们将了解 SQL 中角色的概念、如何创建和使用它以及它的各种功能。 什么是角色?很少有多个用户需要相同的权限。在这种情况下,您可能需要为要授予这些权限的每个用户指定用户名。撤销命令也是如此。因此,管理授予和撤销权限的过程是分组的,然后授予用户。这种命名的相关权限组用于将权限集放入组中。这些分组的权限集然后可以授予多个用户,以便这些用户可以履行特定的功能。这些功能可以是数据库对象或系统权限,也可以是两者。角色通常是为数据库应用程序创建的。可以将多个用户分配给同一个角色。角色通常以工作职能命名,但没有必要这样做。 例如:在人力资源应用程序中,可以定义 4 种不同的角色,例如员工、经理、人力资源管理员和总裁,然后将这些角色分配给员工以匹配他们的工作职能。 可以将权限授予角色组 1。可以将这些角色授予不同的用户,以便他们可以运行不同的应用程序。 在下图所示中,它展示了如何在没有角色的情况下向用户授予权限。![]() 在以下图表中,它展示了如何在有角色的情况下向用户授予权限。![]() Oracle 有许多预定义角色。这些角色在创建数据库时创建。
角色的好处
创建角色使用 create Role 语句,您可以创建一个新角色,为其分配一些权限,甚至分配之前创建的其他角色。 以下语法用于创建角色 在上面的语法中,<rolename> 是创建的角色的名称。NOT IDENTIFIED 表示角色由数据库授权,不需要密码即可启用它。IDENTIFIED 用于指示在启用 SET ROLE 语句的角色之前,用户必须经过指定方法的授权。如果省略了 NOT IDENTIFIED 和 IDENTIFIED 选项,则标准角色将不会被识别。默认情况下,角色将在没有密码的情况下创建。如果使用 IDENTIFIED BY 子句创建角色,则该角色默认处于禁用状态。BY password 用于创建带密码的本地角色。BY EXTERNALLY 用于创建外部角色,BY GLOBALLY 用于创建全局角色。 让我们考虑以下命令集 执行后,将创建 SALESMAN_ROLE。GRANT 命令的语法与用户命令的语法相同。 授予角色权限以下示例用于授予角色 执行后,它将 CREATE TABLE 权限分配给 SALESMAN_ROLE 角色。 将角色授予用户如果要将角色授予其他用户,我们将使用以下语句 执行后,用户 'anshu' 将拥有授予给 SALESMAN_ROLE 角色的所有权限。在将角色授予用户时,您可以选择使用 administrator option 子句授予角色。 将角色授予另一个角色您还可以使用 GRANT 命令将角色授予另一个角色,假设您想将 CONNECT 角色授予 SALESMAN_ROLE 角色。 它将继承已授予 connect 角色的任何权限。 从角色中撤销权限要使用 REVOKE 命令从角色中撤销权限,该命令的语法与从用户那里撤销权限时使用的语法相同。因此,如果您想从 SALESMAN_ROLE 中撤销 CONNECT 角色,请执行以下命令。 删除角色 如果不再需要该角色,可以使用 DROP role 命令删除角色。 每当删除角色时,关联的权限将从数据库中移除。 启用和禁用角色数据库角色可以为数据库用户会话启用或禁用。默认情况下,分配给用户的每个角色都为数据库会话启用。SET ROLE 语句用于为当前会话启用数据库角色。要禁用当前会话中的所有角色,请使用以下命令。 启用非默认角色 如果要启用当前数据库会话中的所有角色,请使用以下语句 您还可以使用 ALTER USER 命令启用 SALESMAN_ROLE 角色。 ALTER ROLE 或 ATTER USER此语句用于修改角色密码并为角色设置默认会话变量值。以下是各种示例列表。 为数据库角色设置密码保护通过将密码与角色关联,可以获得额外的安全级别。默认情况下,角色没有关联的密码。当您想在不撤销权限的情况下暂时暂停对数据库对象集合的访问时,使用带密码的角色通常很方便。 现在假设我们要禁用用户 'anshu' 的所有已授予角色。 执行后,它将禁用用户 'anshu' 的所有角色。如果要查看角色是否已被禁用,请使用以下命令。 现在,如果我们想执行通过 SALESMAN_ROLE 授予 'anshu' 的任何权限,它将不起作用。所以,首先您必须启用角色才能使用其权限。 现在您可以执行 SALESMAN_ROLE 提供的任何权限; |
我们请求您订阅我们的新闻通讯以获取最新更新。