管理角色
可以使用针对 system
数据库执行的一组 Cypher 管理命令来创建和管理角色。
通过 bolt
连接到 DBMS 时,管理命令会自动路由到 system
数据库。
角色管理命令语法
有关语法说明的更多详细信息,请参阅 用于管理命令的 Cypher 语法。 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
(请参阅 DBMS 角色管理权限)。 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
(参见 DBMS 权限管理权限) |
命令 |
|
语法 |
|
描述 |
创建新角色。 有关更多信息,请参阅 创建角色。 |
所需权限 |
有关更多信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
创建新角色,如果存在同名角色,则替换它。 有关更多信息,请参阅 创建角色。 |
所需权限 |
命令 |
|
语法 |
|
描述 |
更改角色的名称。 有关更多信息,请参阅 重命名角色。 |
所需权限 |
有关更多信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
删除角色。 有关更多信息,请参阅 删除角色。 |
所需权限 |
有关更多信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
将角色分配给用户。 有关更多信息,请参阅 将角色分配给用户。 |
所需权限 |
有关更多信息,请参阅 DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
从用户中删除角色。 有关更多信息,请参阅 从用户中撤销角色。 |
所需权限 |
有关更多信息,请参阅 DBMS 角色管理权限。 |
列出角色
可以使用 Cypher 命令 SHOW ROLES
查看所有可用角色,它将返回单列。
列 | 描述 | 类型 |
---|---|---|
角色 |
角色名称 |
|
SHOW ROLES
这与 SHOW ALL ROLES
命令相同。
角色 |
---|
|
|
|
|
|
|
行数:6 |
第一次启动 Neo4j DBMS 时,会有许多内置角色
-
PUBLIC
- 所有用户都被授予该角色。默认情况下,它允许访问主数据库并执行存储过程和函数的权限。 -
reader
- 可以在所有数据库(除system
外)中执行遍历和读取操作。 -
editor
- 可以在所有数据库(除system
外)中执行遍历、读取和写入操作,但不能创建新的标签或关系类型。 -
publisher
- 可以执行与editor
相同的操作,还可以创建新的标签和关系类型。 -
architect
- 可以执行与publisher
相同的操作,以及创建和管理索引和约束。 -
admin
- 可以执行以上所有操作,以及管理数据库、别名、用户、角色和权限。
有关内置角色及其权限的更多信息,请参阅 内置角色和权限。
该命令有多个版本,默认值为 SHOW ALL ROLES
。要仅显示分配给用户的角色,则命令为 SHOW POPULATED ROLES
。要查看分配给每个角色的用户,可以将 WITH USERS
添加到命令中。该命令会为每个角色每个用户生成一行,并生成以下列,除了 SHOW ROLES
输出的列以外
列 | 描述 | 类型 |
---|---|---|
成员 |
用户名 |
|
由于这会提供每个用户一行结果,如果一个角色分配给两个用户,则该角色会显示两次。
SHOW POPULATED ROLES WITH USERS
结果表将显示有关角色及其所属数据库的信息
角色 | 成员 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
行数:6 |
还可以使用 YIELD
、ORDER BY
和 WHERE
对结果进行过滤和排序。
SHOW ROLES YIELD role
ORDER BY role
WHERE role ENDS WITH 'r'
在本示例中
-
结果已过滤,只返回以“r”结尾的角色。
-
结果使用
ORDER BY
按action
列排序。
还可以使用 SKIP
和 LIMIT
对结果进行分页。
角色 |
---|
|
|
|
行数:3 |
创建角色
可以使用 CREATE ROLE
创建角色
CREATE ROLE name [IF NOT EXISTS] [AS COPY OF otherName]
可以使用 CREATE OR REPLACE ROLE
创建或替换角色
CREATE OR REPLACE ROLE name [AS COPY OF otherName]
以下命名规则适用
|
可以使用 CREATE ROLE name AS COPY OF otherName
复制角色,保留其权限。
CREATE ROLE mysecondrole AS COPY OF myrole
创建的角色将出现在 SHOW ROLES
提供的列表中。
SHOW ROLES
角色 |
---|
|
|
|
|
|
|
|
|
行数:8 |
CREATE ROLE
命令是可选的幂等命令,默认行为是在角色已存在的情况下抛出异常。将 IF NOT EXISTS
添加到 CREATE ROLE
命令将确保如果角色已存在,则不会抛出异常,并且不会发生任何操作。
CREATE ROLE myrole IF NOT EXISTS
CREATE OR REPLACE ROLE
命令会导致删除任何现有角色并创建一个新的角色。
CREATE OR REPLACE ROLE myrole
这等效于运行 DROP ROLE myrole IF EXISTS
然后运行 CREATE ROLE myrole
。
|
重命名角色
可以使用 RENAME ROLE
命令重命名角色
RENAME ROLE mysecondrole TO mythirdrole
SHOW ROLES
角色 |
---|
|
|
|
|
|
|
|
|
行数:8 |
|
将角色分配给用户
可以通过使用 GRANT ROLE
将角色分配给用户来授予用户访问权限
GRANT ROLE myrole TO bob
分配给每个用户的角色可以在 SHOW USERS
提供的列表中查看
SHOW USERS
用户 | 角色 | passwordChangeRequired | 已暂停 | 主页 |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数:5 |
可以在一个命令中将多个角色分配给多个用户
GRANT ROLES role1, role2 TO user1, user2, user3
SHOW USERS
用户 | 角色 | passwordChangeRequired | 已暂停 | 主页 |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数:5 |
常见错误(例如尝试将角色授予已被授予该角色的用户)将导致通知。在 Neo4j 的未来主要版本中,某些通知可能会被错误所取代。有关通知的详细信息,请参阅 状态码 → 通知代码。
从用户中撤销角色
可以使用 REVOKE ROLE
撤销用户的角色来撤销用户的访问权限
REVOKE ROLE myrole FROM bob
从用户中撤销的角色将不再出现在 SHOW USERS
提供的列表中
SHOW USERS
用户 | 角色 | passwordChangeRequired | 已暂停 | 主页 |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数:5 |
可以在一个命令中从多个用户中撤销多个角色
REVOKE ROLES role1, role2 FROM user1, user2, user3
常见错误(例如拼写错误或尝试从未被授予该角色的用户中撤销角色)将导致通知。在 Neo4j 的未来主要版本中,某些通知可能会被错误所取代。有关通知的详细信息,请参阅 状态码 → 通知代码。