管理角色AuraDB Business CriticalAuraDB Virtual Dedicated Cloud企业版
角色可以通过针对 system 数据库执行的一组 Cypher 管理命令来创建和管理。
当通过 bolt 连接到 DBMS 时,管理命令会自动路由到 system 数据库。
角色管理命令语法
|
有关语法描述的更多详细信息,请参阅 数据库管理命令语法。 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
请参阅 DBMS 权限管理权限。 |
命令 |
|
语法 |
|
描述 |
创建一个新角色。 有关详细信息,请参阅 创建角色。 |
所需权限 |
有关详细信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
创建一个新角色;如果同名角色已存在,则将其替换。 有关详细信息,请参阅 创建角色。 |
所需权限 |
命令 |
|
语法 |
|
描述 |
更改角色名称。 有关详细信息,请参阅 重命名角色。 |
所需权限 |
有关详细信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
删除一个角色。 有关详细信息,请参阅 删除角色。 |
所需权限 |
有关详细信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
直接将角色分配给用户,或通过基于属性的访问控制(ABAC)身份验证规则间接分配。 有关将角色分配给用户的更多信息,请参阅 将角色分配给用户。 有关将角色分配给身份验证规则的更多信息,请参阅 将角色分配给身份验证规则。 |
所需权限 |
有关详细信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
有关详细信息,请参阅 DBMS 角色管理权限。 |
列出角色
您可以使用 Cypher 命令 SHOW ROLES 查看所有可用角色,默认情况下它会返回单列结果。您可以选择使用 SHOW ROLES YIELD * 来查看角色是否为不可变角色(Immutable)。有关更多信息,请参阅 不可变角色。
| 列 | 描述 | 类型 |
|---|---|---|
role(角色) |
角色名称 |
|
immutable(不可变) |
如果角色是不可变的,则为 |
|
列出所有角色
要列出所有角色,请使用 SHOW ROLES 命令
SHOW ROLES
这与 SHOW ALL ROLES 命令相同。
| role(角色) |
|---|
|
|
|
|
|
|
行数: 6 |
首次启动 Neo4j DBMS 时,会有一些内置角色:
-
PUBLIC- 所有用户都拥有的角色。默认情况下,它授予对主数据库的访问权限以及执行过程和函数的权限。 -
reader- 可以在除system之外的所有数据库中执行遍历和读取操作。 -
editor- 可以在除system之外的所有数据库中执行遍历、读取和写入操作,但不能创建新的标签或关系类型。 -
publisher- 与editor功能相同,但还可以创建新的标签和关系类型。 -
architect- 与publisher功能相同,此外还可以创建和管理索引与约束。 -
admin- 拥有上述所有角色的功能,此外还可以管理数据库、别名、用户、角色和权限。
有关内置角色及其权限的更多信息,请参阅 内置角色和权限。
此命令有多个版本,默认是 SHOW ALL ROLES。若仅显示已分配给用户或身份验证规则的角色,可使用命令 SHOW POPULATED ROLES。它返回与 SHOW ROLES 相同的输出列。
列出分配给角色的用户
要查看哪些用户被分配了哪些角色,可以在命令中添加 WITH USERS。
SHOW POPULATED ROLES WITH USERS
该命令为每个角色/用户组合生成一行,并在 SHOW ROLES 返回的列之外,额外产生一个 member 列,其中包含分配给该角色的用户名;如果角色未分配给任何用户,则为 null。如果一个角色分配给多个用户,它将为每个用户显示一次。
| role(角色) | member |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
行数: 6 |
|
列出分配给角色的身份验证规则在 2026.03 中引入
要查看哪些身份验证规则被分配了哪些角色,请在命令中添加 WITH AUTH RULES
SHOW POPULATED ROLES WITH AUTH RULES
该命令为每个角色/身份验证规则组合生成一行,并在 SHOW ROLES 返回的列之外,额外产生一个 authRule 列,其中包含分配给该角色的身份验证规则名称;如果角色未分配给任何身份验证规则,则为 null。如果一个角色分配给多个身份验证规则,它将为每个规则显示一次。
| role(角色) | authRule |
|---|---|
|
|
|
|
行数: 6 |
|
创建角色
根据您的需求,有多种创建角色的方法。
以下命名规则适用于在 Neo4j 中创建的所有角色
-
第一个字符必须是 ASCII 字母字符。
-
后续字符可以是 ASCII 字母、数字和下划线。
-
角色名称区分大小写。
创建新角色
您可以使用 CREATE [IMMUTABLE] ROLE 创建角色
CREATE [IMMUTABLE] ROLE name [IF NOT EXISTS] [AS COPY OF otherName]
CREATE ROLE 命令是可选幂等的,默认行为是如果角色已存在则抛出异常。在 CREATE ROLE 命令中添加 IF NOT EXISTS 可确保不抛出异常,且如果角色已存在则不执行任何操作。
CREATE ROLE myrole IF NOT EXISTS
创建与现有角色具有相同权限的新角色
您可以使用 CREATE [IMMUTABLE] ROLE name AS COPY OF otherName 复制一个角色,同时保留其权限
CREATE ROLE mysecondrole AS COPY OF myrole
创建的角色会出现在 SHOW ROLES 提供的列表中
SHOW ROLES
| role(角色) |
|---|
|
|
|
|
|
|
|
|
行:8 |
创建新角色或替换现有角色
您可以使用 CREATE OR REPLACE [IMMUTABLE] ROLE 创建或替换角色
CREATE OR REPLACE [IMMUTABLE] ROLE name [AS COPY OF otherName]
CREATE OR REPLACE ROLE 命令会导致任何现有角色被删除,并创建一个新角色。
例如:
CREATE OR REPLACE ROLE myrole
命令 CREATE OR REPLACE ROLE myrole 将删除现有的 myrole 并创建一个同名的新角色。这等同于执行 DROP ROLE myrole IF EXISTS,然后执行 CREATE ROLE myrole。
|
|
重命名角色
您可以使用 RENAME ROLE 命令重命名角色
RENAME ROLE mysecondrole TO mythirdrole
重命名角色后,新名称将出现在 SHOW ROLES 提供的列表中
SHOW ROLES
| role(角色) |
|---|
|
|
|
|
|
|
|
|
行:8 |
|
|
将角色分配给用户
本节介绍了如何直接将角色授予用户。有关如何根据基于属性的规则将角色分配给用户的信息,请参阅 基于属性的访问控制。
将角色分配给用户
可以通过使用 GRANT ROLE 分配角色来赋予用户访问权限
GRANT ROLE myrole TO bob
每个用户分配的角色可以在 SHOW USERS 提供的列表中查看
SHOW USERS
| user(用户) | 角色 | passwordChangeRequired | suspended | home |
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行:5 |
||||
将多个角色分配给多个用户
您可以在一个命令中将多个角色分配给多个用户
GRANT ROLES role1, role2 TO user1, user2, user3
SHOW USERS
| user(用户) | 角色 | passwordChangeRequired | suspended | home |
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行:5 |
||||
诸如尝试将已授予的角色再次分配给用户等常见错误,会导致通知。其中一些通知在未来的 Neo4j 主要版本中可能会被错误消息取代。有关通知的详细信息,请参阅 错误与通知状态码 → 通知代码列表。
从用户撤销角色
本节介绍了如何直接从用户撤销角色。有关如何根据基于属性的规则从用户撤销角色分配的信息,请参阅 基于属性的访问控制。
从用户撤销角色
可以通过使用 REVOKE ROLE 撤销其角色来让用户失去访问权限
REVOKE ROLE myrole FROM bob
从用户撤销的角色将不再出现在 SHOW USERS 提供的列表中
SHOW USERS
| user(用户) | 角色 | passwordChangeRequired | suspended | home |
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行:5 |
||||
从多个用户撤销多个角色
您可以在一个命令中从多个用户撤销多个角色
REVOKE ROLES role1, role2 FROM user1, user2, user3
诸如拼写错误或尝试撤销用户未拥有的角色等常见错误,会导致通知。在 Cypher 25 中,针对不存在用户、角色或数据库的无效 REVOKE 命令,其通知已替换为错误。有关通知的详细信息,请参阅 错误与通知状态码 → 通知代码列表。