管理角色
可以使用一组针对 system
数据库执行的 Cypher 管理命令来创建和管理角色。
当通过 bolt
连接到 DBMS 时,管理命令会自动路由到 system
数据库。
角色管理命令语法
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
请参阅DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
命令 |
|
语法 |
|
描述 |
|
所需权限 |
请参阅DBMS 权限管理权限。 |
命令 |
|
语法 |
|
描述 |
创建新角色。 有关更多信息,请参阅创建角色。 |
所需权限 |
有关更多信息,请参阅DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
创建新角色,如果存在同名角色,则替换它。 有关更多信息,请参阅创建角色。 |
所需权限 |
命令 |
|
语法 |
|
描述 |
更改角色的名称。 有关更多信息,请参阅重命名角色。 |
所需权限 |
有关更多信息,请参阅DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
移除角色。 有关更多信息,请参阅删除角色。 |
所需权限 |
有关更多信息,请参阅DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
将角色分配给用户。 有关更多信息,请参阅将角色分配给用户。 |
所需权限 |
有关更多信息,请参阅DBMS 角色管理权限。 |
命令 |
|
语法 |
|
描述 |
从用户移除角色。 有关更多信息,请参阅从用户撤销角色。 |
所需权限 |
有关更多信息,请参阅DBMS 角色管理权限。 |
列出角色
您可以使用 Cypher 命令 SHOW ROLES
查看所有可用角色,该命令默认返回单个列。或者,您也可以使用 SHOW ROLES YIELD *
来查看角色是否不可变。有关更多信息,请参阅不可变角色。
列 | 描述 | 类型 |
---|---|---|
role |
角色名称 |
|
immutable |
如果角色不可变,则为 |
|
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
。要查看哪些用户分配给哪些角色,可以在命令中添加 WITH USERS
。该命令为每个角色/每个用户生成一行,并在 SHOW ROLES
输出的列之外产生以下列:
列 | 描述 | 类型 |
---|---|---|
member |
用户名 |
|
由于这会为每个用户返回一行结果,因此如果一个角色分配给两个用户,它会显示两次。
SHOW POPULATED ROLES WITH USERS
结果表将显示有关角色及其所属数据库的信息
role | member |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
行数:6 |
也可以使用 YIELD
、ORDER BY
和 WHERE
过滤和排序结果。
SHOW ROLES YIELD role
ORDER BY role
WHERE role ENDS WITH 'r'
在此示例中
-
结果已过滤,仅返回以 'r' 结尾的角色。
-
结果使用
ORDER BY
按action
列排序。
也可以使用 SKIP
和 LIMIT
对结果进行分页。
role |
---|
|
|
|
行数:3 |
创建角色
可以使用 CREATE [IMMUTABLE] ROLE
创建角色
CREATE [IMMUTABLE] ROLE name [IF NOT EXISTS] [AS COPY OF otherName]
可以使用 CREATE OR REPLACE [IMMUTABLE] ROLE
创建或替换角色
CREATE OR REPLACE [IMMUTABLE] ROLE name [AS COPY OF otherName]
适用以下命名规则
|
可以使用 CREATE [IMMUTABLE] ROLE name AS COPY OF otherName
复制角色,并保留其权限。
CREATE ROLE mysecondrole AS COPY OF myrole
创建的角色将显示在 SHOW ROLES
提供的列表中。
SHOW ROLES
role |
---|
|
|
|
|
|
|
|
|
行数:8 |
CREATE ROLE
命令是可选幂等的,默认行为是如果角色已存在则抛出异常。在 CREATE ROLE
命令中添加 IF NOT EXISTS
将确保如果角色已存在,则不会抛出异常,也不会发生任何事情。
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
role |
---|
|
|
|
|
|
|
|
|
行数:8 |
|
将角色分配给用户
可以通过使用 GRANT ROLE
为用户分配角色来赋予他们访问权限
GRANT ROLE myrole TO bob
分配给每个用户的角色可以在 SHOW USERS
提供的列表中查看
SHOW USERS
user | roles | passwordChangeRequired | suspended | home |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数:5 |
可以在一个命令中将多个角色分配给多个用户
GRANT ROLES role1, role2 TO user1, user2, user3
SHOW USERS
user | roles | passwordChangeRequired | suspended | home |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数:5 |
常见错误,例如尝试向已授予这些角色的用户授予角色,将导致通知。Neo4j 未来主要版本中,部分此类通知可能会被错误取代。有关通知的详细信息,请参阅状态码 → 通知码。
从用户撤销角色
用户可以通过使用 REVOKE ROLE
撤销其角色来失去访问权限
REVOKE ROLE myrole FROM bob
从用户撤销的角色将不再显示在 SHOW USERS
提供的列表中
SHOW USERS
user | roles | passwordChangeRequired | suspended | home |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数:5 |
可以在一个命令中从多个用户撤销多个角色
REVOKE ROLES role1, role2 FROM user1, user2, user3
常见错误,例如拼写错误或尝试从未被授予这些角色的用户撤销角色,将导致通知。Neo4j 未来主要版本中,部分此类通知可能会被错误取代。有关通知的详细信息,请参阅状态码 → 通知码。